一丶介绍
砸壳工具
“从AppStore下载的App(以下简称StoreApp)是被苹果加密过的(从其他渠道下载的一般没有加密),可执行文件被套上了一层保护壳,而class-dump无法作用于加密过的App。在这种情况下,想要获取头文件,需要先解密App的可执行文件,俗称“砸壳”。”
二丶使用:
2.1准备阶段:
2.1.1 dumpdecrypted下载:
$git clone git://github.com/stefanesser/dumpdecrypted/
2.1.2用cydia安装adv-cmds
后面会用到,主要是可以用ps命令
2.1.3用cydia安装Cycript
Cydia自带源Cydia/Telesphoreo里面找Cycript
后面会用到;
2.1.4 用Cydia安装OpenSSH
后面用到
2.1.5 iPhone和PC在同一个Wifi下
2.1.6 iFunBox
http://www.jianshu.com/p/e9d0630ef3c0
2.2 使用
2.2.1编译
在dumpdecrypted文件夹中,使用
$make
文件夹内会出现dumpdecrypted.dylib 的动态库;
2.2.2 把它放到需要砸壳的document目录下
“StoreApp对沙盒以外的绝大多数目录没有写权限。
dumpdecrypted.dylib要写一个decrypted文件,
但它是运行在StoreApp中的,与StoreApp的权限相同,
那么它的写操作就必须发生在StoreApp拥有写权限的路径下才能成功。
StoreApp一定是能写入其Documents目录的,
因此在Documents目录下使用dumpdecrypted.dylib时,
保证它能在当前目录下写一个decrypted文件,
这就是把dumpdecrypted.dylib拷贝到Documents目录下操作的原因。”
摘录来自: 沙梓社 吴航 著. “iOS应用逆向工程(第2版)"
获取你目标app的路径方法:
利用sycript查找App路径;先把所有App关闭;只运行目标App
假如目标App:XXXX
$ssh root@192.168.3.90
$ps -e
xzbde-iPhone:~ root# cycript -p XXXX
cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
最终要获取2个路径:
#可执行文件:
/var/mobile/Containers/Bundle/Application/CEAF4585-2B65-426F-944E-F616EB1F81DC/XXXX.app/XXXX
#Document:
var/mobile/Containers/Data/Application/B058D33F-F133-4555-8212-E6D1AE42B7E7/Documents/
可以使用iFunBox把dumpdecrypted.dylib拷贝到Doucument里;
切换到Document里面
$cd /var/mobile/Containers/Data/Application/B058D33F-F133-4555-8212-E6D1AE42B7E7/Documents/
执行: $DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib + 空格+执行文件path
$DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/CEAF4585-2B65-426F-944E-F616EB1F81DC/XXXX.app/XXXX
最终效果:
三丶提取
在document里会多了个.decrypted文件;copy到pc上,就可以使用class-dump丶IDA等工具了;