Dumps decrypted mach-o files from encrypted iPhone applications from memory to disk. This tool is necessary for security researchers to be able to look under the hood of encryption.
源代码只有一个文件 dumpdecrypted.c,文件只有一个函数 dumptofile,程序没有解密逻辑,当它执行时候,加载器已经完成了目标 mach-o 文件的装载,对应的解密已经完成。该函数的工作是从 LC_ENCRYPTION_INFO 遍历所有的 load command,将对应的解密数据从内存中 dump 出来,复写到 mach-o 文件中。
步骤
- 安装 OpenSSH, Cycript
- 下载 dumpdecrypted 源代码
- 在源代码目录下执行 make 指令,生成一个 dumpdecrypted.dylib
- ssh root@ip_address,默认密码是 alpine
- ps -e,找到应用的进程号,以及进程路径
- cycript -p 进程号,输入下面代码
- [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
- 从上个指令获取 app document 目录路径
- ctrl + d,退出 cycript 操作
- 将 dumpdecrypted.dylib 文件拷贝到 app document 目录下, scp src_path root@ip_address:des_path
- DYLD_INSERT_LIBRARIES=xxx.dylib_path app进程路径,开始砸壳,完成后会得到一个 .decrypted文件
- 使用 scp 命令将砸壳后的文件复制到电脑上, scp root@ip_address:src_path des_path
- 使用 class-dump 获取头文件,class-dump -H WeChat.decrypted -o des_path
遇到错误
dyld: could not load inserted library 'dumpdecrypted.dylib' because no suitable image found. Did find:
dumpdecrypted.dylib: required code signature missing for 'dumpdecrypted.dylib'
解决方案:
## 列出可签名证书
security find-identity -v -p codesigning
## 为dumpecrypted.dylib签名
codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)" dumpdecrypted.dylib
涉及软件
iOS - 10.3.3
OpenSSH - 6.7p1-13
Script - 0.9.595
Fileza File Manager - 3.5.2-1
测试应用:WeChat, AlipayWallet
2018-5-25-23