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文件下就會有導出的微信頭文件了。