砸殼
從App Store上下載的ipa里面的二進(jìn)制文件是經(jīng)過加密的,class-dump和Hopper Disassembler都需要用到未加密的二進(jìn)制文件,所以需要我們通過砸殼得到。
我們可以通過命令查看二進(jìn)制文件是否加密
otool -l 二進(jìn)制文件路徑 | grep -B 2 crypt

其中cmd尾部為_64的是arm64架構(gòu),另一個為armv7架構(gòu),cryptid=1表示有加密,cryptid=0表示未加密。圖中是App Store上下載的加密過的的微信二進(jìn)制文件。
常用的砸殼工具有dumpdecrypted、Clutch、AppCrackr。
這里我們使用dumpdecrypted砸殼。
https://github.com/stefanesser/dumpdecrypted
通過make得到的dumpdecrypted.dylib就是我們的工具。
這里我們需要用到越獄的iOS設(shè)備,并且安裝好openssh和cycript。如果沒有越獄設(shè)備,可以去pp助手上下載越獄版的ipa,這種ipa里面的二進(jìn)制文件是沒有加密的。
- ssh root@ip 連接到越獄設(shè)備,初始密碼默認(rèn)是alpine,首次連接請自行修改。
- ps -e 查看所有進(jìn)程信息
- cycript -p 進(jìn)程id 勾住進(jìn)程 (砸殼過程中是為了方便查看app的沙盒路徑)



成功勾住進(jìn)程之后,我們可以通過oc函數(shù)獲取沙盒路徑
[NSHomeDirectory() stringByAppendingString:@"/Documents"]

將bundle路徑和沙盒路徑復(fù)制保存
通過scp命令將dumpdecrypted.dylib復(fù)制的沙盒路徑:
scp dumpdecrypted.dylib路徑 root@ip:沙盒路徑

cd到沙盒路徑執(zhí)行命令砸殼:
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib bundle路徑

ls查看成果物,再使用scp命令將成果物拷貝到電腦

至此,砸殼部分告一段落,我們拿到了.decrypted的砸殼后的二進(jìn)制文件
