為什么需要脫殼?是因?yàn)槲覀冊谏蟼鱝pp到蘋果商店的時(shí)候AppStore已經(jīng)是幫我們加殼的了,如下圖:

什么又是加殼?
利用特殊的算法,對可執(zhí)行文件的編碼進(jìn)行改變(比如壓縮,加密),以達(dá)到保護(hù)代碼的目的

什么又是脫殼?
摘掉殼程序,將未加密的可執(zhí)行文件還原出來,有些人也稱為砸殼,脫殼只要有兩種方法:硬脫殼,動態(tài)脫殼

iOS中的脫殼工具
iOS中有很多好用的脫殼工具
AppCrackr、Crackulous
如何驗(yàn)證可執(zhí)行文件是否已經(jīng)脫殼
查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密
通過otool命令行也可以:otool -l 可執(zhí)行文件路徑 | grep crypt
Clutch配置
建議去掉版本號,改名為Clutch,將Clutch文件拷貝到iPhone/usr/bin 目錄中

如果在iPhone上執(zhí)行Clutch指令時(shí)候,權(quán)限不夠,賦予可執(zhí)行的權(quán)限

Clutch使用
列出已安裝的APP:Clutch -i

輸入APP序號或者Bundle Id進(jìn)行脫殼操作:Clutch -d App 序號或者Bundled

脫殼成功后會生成過一個(gè)ipa文件

dumpdecrypted
下載源代碼目錄執(zhí)行make指令進(jìn)行編譯,獲得dylib動態(tài)庫文件

將dylib文件拷貝到iPhone上(如果是root用戶,建議放var/root目錄),然后終端進(jìn)入dylib所在的目錄,使用環(huán)境變量DYLD_INSERT_LIBRARIES將dylib注入到需要脫殼的可執(zhí)行文件(可執(zhí)行文件路徑可以通過ps -A查看獲?。?/p>
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib? 可執(zhí)行文件路徑

.decrypted 文件就是脫殼后的可執(zhí)行文件

在使用過程中,可能會遇到如下錯(cuò)誤

原因:對dylib所在的文件夾權(quán)限不夠
解決方案:將dylib放在用戶所在文件夾,比如如果是root用戶,將dylib放在/var/root 目錄,如果是mobile用戶,請將dylib放在/var/mobile目錄;如果是mobile用戶,請將dylib放在/var/mobile目錄