微信是一个超级APP,对其进行逆向分析,对我们的APP开发有很高的参考价值。最最重要的一点是,关于微信的资料相信网上还是有着比较多的资料。另外要说的一点是网上有很多售卖的微信Tweak,诸如自动抢红包、微商助手、一键点赞等,最令人惊讶的是,竟然还有在微信群里赌博的Tweak助手!废话不多说,下面进入正题。
首先从AppStore上把最新版本的微信下载到一款越狱手机中。然后使用Cycript动态的探索下微信的页面结构,Cycript的具体信息这里就不在做详细介绍了。详细过程见下图:
cycript使用场景通过Cycript能够对我们的设想进行验证,也可以对微信页面上的基本UI控件进行定位,还可以通过找到相应的控件然后打印出控件绑定的相关事件等。Cycript就像一台腹腔镜般打入了微信内部,让我们可以对任何我们感兴趣的东西进行分析与验证。
但仅仅使用Cycript来提取细节是远远不够的,我们还需要从更宽广的尺度上来分析微信整个架构与组织。这时classdump就能够派上用场了。classdump是一个分析二进制文件的工具,这里我们可以使用它来获取微信APP的所有头文件信息。因为AppStore的原因,微信App上带有一层保护壳,我们需要使用一款名叫dumpdecrypted的开源工具破掉这层壳后才能使用classdump导出头文件。开源工具的地址是:https://github.com/stefanesser/dumpdecrypted。使用者需要把工程拷贝到本地并编译成可使用的工具,然后scp到手机中。使用方式如下图:
破壳工具dumpdecrypted使用场景成功后,破除外壳的微信可执行文件就生成在当前所在目录下,使用scp拷贝到mac机器上后,就可以使用class-dump命令获取头文件信息了。命令截图如下:
class-dump解析头文件使用场景除了能多直接获取头文件外,我们还可以通过ida工具来反编译可执行文件,相比于Android平台JAVA代码反编译后的伪代码,IOS平台可执行文件反编译生成的伪代码的可主动性要低一级,大部分都是类似汇编语言的存在,但足够我们理清自己的思绪,前提是要耐下心来阅读这些伪代码,截图如下:
ida反编译使用场景另外还有一个比较值得推荐的工具是Reveal,它是一个查看应用界面详细构造的工具,网络上有很多如何使用的文章,这里不在介绍,给出使用截图一张:
Reveal查看UI界面使用场景有了头文件,有了ida反编译,配合上cycript,可以验证我们的各种关于微信代码的猜测,但要将这些猜测串成一个可执行的Tweak,就需要反复的大量的实验。看到上图微信界面那上黄色的相当怪异的电话图标了吗,它就是下一篇的主角。当基本完成这个自动添加好友的微信时,历经了100多次的编译安装测试的过程。。。。
网友评论