dumpdecrypted砸壳

一、原理

动态注入可执行文件Mach-o,从内存dump出解密的内容

github : dumpdecrypted

二、编译dumpdecrypted

cd到目录 make 得到一个dumpdecrypted.dylib

PS:后面注入过程出现一个问题:


dumpdecrypted砸壳_第1张图片
因为没有签名dylib,注入失败

解决方案:
列出可签名证书

security find-identity -v -p codesigning

为dumpecrypted.dylib签名

codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)" dumpdecrypted.dylib

三、砸壳(解密)

1.定位目标应用的可执行文件

手机退出其他应用,只打开目标应用(以微信为例),电脑ssh到手机,使用ps -e(ps命令需要手机安装插件adv-cmds)命令查看进程:


dumpdecrypted砸壳_第2张图片
定位微信进程

2.获取应用沙盒目录Documents

动态库注入解密需要写到同一目录下,而应用存在沙盒中,通过BundleID调用私有API获取Documents目录:
cat /var/containers/Bundle/Application/BE4C2082-083B-4DE4-924D-EDCA98EB1701/WeChat.app/Info.plist | grep CFBundleIdentifier -A 1

获取bundleID

3.调用私有API获取沙盒Documents目录

新建iOS工程,在目标应用设备上运行

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSString *bundleID = @"com.tencent.xin";
    NSURL *dataURL = [[NSClassFromString(@"LSApplicationProxy") performSelector:@selector(applicationProxyForIdentifier:) withObject:bundleID] performSelector:@selector(dataContainerURL)];
    NSLog(@"%@",[dataURL.absoluteString stringByAppendingString:@"/Documents"]);
    return YES;
}

控制台输出:
2018-11-08 23:13:26.751557 decrypt[623:18364] file:///private/var/mobile/Containers/Data/Application/02A7FF42-8A6B-45BA-8C25-99760F0311C7/Documents
对应Documents目录:
/var/mobile/Containers/Data/Application/02A7FF42-8A6B-45BA-8C25-99760F0311C7/Documents

4.复制dylib到Documents目录并进行解密

  • 在dumpdecrypted.dylib目录下打开终端,复制dylib使用以下命令(自行修改不同参数):
    scp ./dumpdecrypted.dylib [email protected]:/var/mobile/Containers/Data/Application/02A7FF42-8A6B-45BA-8C25-99760F0311C7/Documents

  • ssh到手机端解密
    1.cd /var/mobile/Containers/Data/Application/02A7FF42-8A6B-45BA-8C25-99760F0311C7/Documents
    2.DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/BE4C2082-083B-4DE4-924D-EDCA98EB1701/WeChat.app/WeChat

    dumpdecrypted砸壳_第3张图片
    dump出解密文件

  • 解密文件就在Documents目录,拷贝出来玩耍吧
    Mac端:
    scp [email protected]:/var/mobile/Containers/Data/Application/02A7FF42-8A6B-45BA-8C25-99760F0311C7/Documents/WeChat.decrypted ~/desktop

  • 查看解密文件


    dumpdecrypted砸壳_第4张图片
    cryptid为0表示未加密

上述操作比较原始,后面会有更快的砸壳方法,庆哥的改版dumpdecrypted(试过一遍没搞懂),庆哥推荐使用 frida-ios-dump,传送门:使用frida-ios-dump快速通过越狱设备砸壳

你可能感兴趣的:(dumpdecrypted砸壳)