AppStore下载的程序都会加壳,这个时候想要拿到程序中的头文件来做分析就需要砸壳,然后才能用classdump来导出头文件。
这里用微信来举例:
- 1.先定位微信文件位置。
有很多方法可以定位到微信进程的文件。这里用ps命令来查找(当然你的手机得安装ps工具)。Kaitode-iPhone:~ root# ps -e | grep WeChat 3742 ?? 0:11.24 /var/containers/Bundle/Application/5C6E85D3-691F-4C75-A563-4EB426FB60B0/WeChat.app/WeChat 4113 ttys000 0:00.01 grep WeChat
- 2.使用dumpdecrypted砸壳WeChat
- dumpdecrypted可以Mac上使用git clone https://github.com/stefanesser/dumpdecrypted.git命令直接下载然后make就会生成dumpdecrypted.dylib文件。
- 拷贝dumpdecrypted文件到手机上。
Kaito:dumpdecrypted Kaito$ scp dumpdecrypted.dylib root@192.168.43.162:/tmp
- 获取WeChat沙盒路径。
这里用到了Cycript工具,先在Cydia上搜索Cycript进行安装。Kaitode-iPhone:/tmp root# cycript -p WeChat cy# dir = NSHomeDirectory() @"/var/mobile/Containers/Data/Application/7BCD8E9F-0783-4668-85C5-243DFCFF6998" cy#
- 进入沙盒Documents文件夹。
Kaitode-iPhone:/tmp root# cd /var/mobile/Containers/Data/Application/7BCD8E9F-0783-4668-85C5-243DFCFF6998/Documents
- 拷贝dumpdecrypted.dylib到Documents文件夹下。
cp /tmp/dumpdecrypted.dylib .
- 砸壳(ios9.3.2以上版本先执行su mobile 命令否则会失败报错:kill 9)
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/5C6E85D3-691F-4C75-A563-4EB426FB60B0/WeChat.app/WeChat
- 4把砸壳后的WeChat.decrypted拷贝到Mac上
scp WeChat.decrypted Kaito@192.168.43.68:/tmp
- 5导出头文件
这里用到了classdump工具可以将Mach-O文件中的Objective-C运行时的声明的信息导出,即编写OC代码时的 .h文件。安装和详细信息查看可以去官网http://stevenygard.com/projects/class-dump/class-dump -s -S -H WeChat.decrypted -o WCHeaders
这样在WCHeaders文件下就会有导出的微信头文件了。