一般咱們從App Store下載的應用,拿到安裝包以後,經過class-dump導出頭文件的時候,會發現沒法導出頭文件,緣由就是App Store對咱們上傳的App進行了加殼操做。git
利用特殊的算法,對可執行文件的編碼進行改變(好比壓縮、加密),以達到保護程序代碼的目的github
這裏的Crypt ID表示加密工具類型,若是爲1,表示使用編號爲1的加密工具進行加密算法
otool -l 可執行文件路徑 | grep crypt
複製代碼
因爲Load Commands內容較多,因此經過crypt關鍵字進行檢索bash
既然沒法經過加殼後的程序導出咱們所須要的頭文件信息,那麼咱們就須要對程序進行脫殼操做工具
摘掉殼程序,將未加密的可執行文件還原出來編碼
脫殼方式有兩種,硬脫殼和動態脫殼。加密
iOS中經常使用的脫殼工具備Clutch和dumpdecryptedspa
能夠點擊下載Clutch最新Release版本命令行
scp -P 10088 ./Clutch root@localhost:/usr/bin
複製代碼
chmod +x /usr/bin/Clutch
複製代碼
Clutch -i
複製代碼
Clutch -d 2
Clutch -d com.gemd.iting
複製代碼
路徑當中的/private/var是iPhone中的真實路徑,iPhone的/var是/private/var的替身code
點擊下載dumpdecrypted工具
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可執行文件路徑
複製代碼
能夠經過ps -A查看可執行文件的完整路徑
執行完成以後,在/var/root目錄下會生成.decrypted文件,這就是脫殼以後的可執行文件。如今使用otool命令查看Load Commands能夠發現Crypt ID爲0。
最後使用class-dump就能夠導出可執行文件中的全部頭文件了。