從之前的知識可知咖驮,通過class-dump或hopper就可以知道一個app的頭文件信息边器。
加殼的app:
但如果是從《Appstore》上下載的,這class-dump或hopper兩個工具都解析不出來托修,因為加了殼忘巧。
不加殼的app:
如果是從1、《pp助手》《Cydia》上下載的睦刃,2砚嘴、XCode打包安裝的,都是脫了殼的涩拙。
不加殼的app驗證:從《pp助手》上下載的app導(dǎo)出Mach-O际长,可以dump出頭文件
以『喜馬拉雅』為例,從《pp助手》上下載好兴泥。
先確定在手機上的哪個位置工育?
1、連接登錄手機搓彻;2如绸、打開該app,ps -A
旭贬,找到該app進程名稱即可知道路徑
導(dǎo)出到Mac怔接,用class-dump或hopper查看頭文件
加殼的app驗證:從Appstore上下載《拼多多》
從手機中導(dǎo)出拼多多的Mach-O文件
可以發(fā)現(xiàn),并沒有把頭文件導(dǎo)出來稀轨,這是因為Appstore上的app加了殼扼脐。
能否直接class-dump出頭文件,就看是從哪里下載的奋刽,是否已經(jīng)脫殼
自己來脫殼
1瓦侮、先了解下加殼原理
已加密的可執(zhí)行文件是無法運行的,殼程序會對已加密的可執(zhí)行文件解密還原成無加密的可執(zhí)行文件杨名,這樣可執(zhí)行文件就可以運行了脏榆。
2、了解下脫殼原理
常用的iOS脫殼工具有哪些台谍?
- Clutch:https://github.com/KJCracks/Clutch
- dumpdecrypted:https://github.com/stefanesser/dumpdecrypted/
- AppCrackr须喂、Crackulous已經(jīng)過時了
如何驗證可執(zhí)行文件是否已經(jīng)脫殼?
方法一:—— LC_ENCYPTION_INFO
查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值趁蕊,0代表未加密坞生,非0表示加了密。
方法二:
通過otool命令行也可以:otool -l 可執(zhí)行文件路徑 | grep crypt
脫殼工具01-Clutch
脫殼工具02-dumpdecrypted
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可執(zhí)行文件路徑
執(zhí)行完命令后掷伙,脫殼的.decrypted文件就在/var/root路徑下是己,復(fù)制到Mac,pinduoduo.decrypted改名為pinduoduo_decrypted任柜。
對比脫殼前后的信息: