1.介绍
dumpdecrypted 是一个开源的工具,它会注入可执行文件中,动态的从内存中dump解密后的内容。
##2.原始版dumpdecrypted使用
###2.1下载以及编译dumpdecrypted
从github下载源代码并且编译:
1 | MacBookPro:dumpdecrypted lemon$ git clone https://github.com/stefanesser/dumpdecrypted.git |
2.2 用PS命令定位待解密的可执行文件
1 | MacBookPro:~ lemon$ ssh 5s |
2.3 获取目标APP的document目录
1 | lemons-iPhone5S:~ root# cat /var/containers/Bundle/Application/4503A878-7B82-46C3-B938-8D8719A6D78E/Friday.app/Info.plist | grep CFBundleIdentifier -A 1 |
2.4 将dylib复制到document目录
2.4.1 通过私有api获取目标app的document目录
新建一个xcode项目,将以下代码复制到APPDelegate的application:didfinishLaunchingWithOptions:下,然后运行项目,就可以在控制器输出document的目录
1 | NSString *bundleId = @"com.xtuone.Friday"; |
通过以上代码获得的document目录是:/var/mobile/Containers/Data/Application/06B16FDB-4EA1-4093-A729-613111061798/Documents
####2.4.2 通过cycript获取目标app的document目录
1 | lemons-iPhone5S:~ root# cycript -p 6707 |
2.4.3 复制dumpdecrypted.dylib到上述的document路径中
1 | scp -P 2222 dumpdecrypted.dylib root@localhost:/var/mobile/Containers/Data/Application/06B16FDB-4EA1-4093-A729-613111061798/Documents |
2.5 解密
通过DYLD_INSERT_LIBRARIES注入解密
3 通过frida-ios-dump 来给应用脱壳
4 Clutch
clutch同样是一个开源解密工具,与dumpdecrypted不同的是,Clutch会生成一个新的进程,然后暂停进程并且dump内存来生成新的ipa。
4.1 下载并编译Clutch
git clone https://github.com/KJCracks/Clutch
下载完成之后用xcode打开工程,设置Debug生成所有的架构,设置Build Active Architecture 为 NO ,选择真机设备 command+B 编译。编译完成之后在本地的Build文件夹里面会有一个Clutch的命令行文件
4.2 将文件复制到设备中
使用如下命令,把生成的Build/Clutch复制到设备/usr/bin目录下,并且设置可执行权限。
scp -P 2222 root@localhost:/usr/bin
ssh 5s
chmod +x /usr/bin/Cluch
4.3 Clutch解密
SSH到越狱设备,使用Clutch -i 运行获取目标target的BundleID
使用Clutch -b target.BundleID来解密
1 | lemons-iPhone5S:~ root# Clutch -b com.xtuone.Friday |
5 总结
给应用砸壳实际上有两种方法,一种是基于DYLD_INSERT_LIBRARIES环境变量将动态库注入到目标进程,然后dump内存。另外一种是通过posix_spawnp创建一个进程,然后dump内存。