GitHub 项目推荐|掌握如何分析一个App以微信为例



原创 程序员新视界 2019-09-09 16:12:28

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

通过这个项目学会如何分析一个第三方 APP。

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

项目分析

仓库名称:iWeChat

标星(star):1252 (网红级项目,高手作品,star可以走一波)

标星趋势

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

关注(watch):48

拷贝(fork):153

贡献人数:1 (一枝独秀,独孤求败,也许有你的加入,项目可以走得更远)

仓库大小:8 MB

代码提交周期分布:

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

综合推荐指数: 2星半

开发语言

主要语言:Objective-C

语言分布:Objective-C:99.97%、Python:0.03%

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

项目概述

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

初衷

通过这个项目学会如何分析一个第三方 APP

首先第一步是获取一个破解的 ipa 包,我们可以通过下面这几种方式获取:
  • 方式一:iTunes

苹果既然在高版本的 iTunes 取消了获取 ipa 包的入口,那我们就想办法降级处理。需要下载低版本的 iTunes。 下载。

下载完后,安装,第一次启动的时候按住 option 键,这样才不会报错,安装完成后,即可下载应用的 ipa 包。下载完成后,在应用的图标上按右键,show in finder 即可找到 ipa 包。

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

  • 方式二:pp助手

电脑安装一个 pp助手客户端,直接下载越狱应用,下载完成后,即可在“本地应用”中找打 APP 的 ipa 包。需要强调一点,这种方式下载的应用是解密后的 ipa。

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

头文件分类

有时候为了分析方便,需要把所有的头文件分成不同的文件夹存放。也就是说把他组织成我们开发 APP 时的目录结构。而微信的目录结构大致如下:

把头文件按模块来划分,最后能勾勒出微信的整体项目结构放到主工程中。目前已经勾勒出微信的目录结构,不过不是很全。参考

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

通过头文件搜索

如果APP使用了三方库,可以输入PodsDummy来快速找到使用的第三方库和私有库;

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

UI

除了头文件外,研究第三方 APP 另一个比较重要的点就是查看 UI。可以使用 Reveal 查看视图层级。使用 MonkeyDev 可以在非越狱的手机上运行 Reveal。

MonkeyDev 默认集成是最新版本,需要把自己的 RevealServer.framework放到/opt/MonkeyDev/frameworks下(打开 Reveal,点击 reveal - help - show reveal in finder 即可找到 RevealServer.framework),这样就可以查看时图层级。

如果 Reveal 过期了,直接修改电脑时间为可以继续使用。

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

继承层级

使用 python 脚本轻松找出继承层级,比如我想找出 UIWindow 的继承层级结构,在这里可以找到 python脚本:

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

沙盒目录

沙盒目录结构是什么,每个文件夹下面保存了那些数据。非越狱手机,通过Xcode直接导出(windows->devices and simulators - 设置按钮 - Download Container ...),这个时间比较长,需要耐心等待。

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

使用iFunBox工具

这个工具比较强大,可以直接把越狱设备的内容拷贝到电脑上,一图胜千言,直接看图吧。

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

UIDebug 工具

把 lib/LEFETopViewControllerMark.{h,m} 文件导入到用 MonkeyDev 创建的项目中,要添加到 xxxDylib中。然后添加个事件,当事件触发时调用方法

[LEFETopViewControllerMark revealTopestViewControllerAndFrame]

GitHub Objective-C项目推荐|掌握如何分析一个App以微信为例

项目中分析APP的手段和方法很多,篇幅有限,不一一列举。

项目地址

https://github.com/lefex/iWeChat


0