目录
运行环境
2022年9月
MBP M1 macOS Monterey 12.4
iPhone 8 iOS 14.2
Human Proficient in iOS & Cycript development
控台环境
环境 | 提示符 |
---|---|
#mac | $ command |
#iPhone | Toki-iPhone: root# command |
#cycript | cy# command |
判断可执行文件是否加壳
通过otool
工具解析可执行文件,根据cryptid
的值判断,1为有壳,0为无壳。
可能会出现多个cryptid
的情况,只要有一个为1,就视为有壳。
$ otool -l _executable_ | grep cryptid
cryptid 1
获取动态脱壳工具
dumpdecrypted https://github.com/stefanesser/dumpdecrypted
dumpdecrypted是一个CMake项目,下载后自行编译即可生成可执行文件。
当然也可以选择下载我编译好的文件 dumpdecrypted.dylib。
将动态脱壳工具添加到已越狱的iPhone中
前面介绍过用ssh连接iPhone,现在我们要通过ssh进行文件传输。
- 发送文件,从本地
_file_path_
到 iPhone 的_path_
$ scp _file_path_ root@192.168.x.x:/_path_
- 拉取文件,从iPhone 的
_path_
到本地_file_path_
$ scp root@192.168.x.x:/_path_ _file_path_
发送dumpdecrypted.dylib
文件到已越狱的iPhone手机
$ scp dumpdecrypted.dylib root@192.168.x.x:/usr/lib/
现在用ssh连接到iPhone,查看dumpdecrypted.dylib
文件存在,代表操作成功。
Toki-iPhone: root# ls /usr/lib/dumpdecrypted.dylib
/usr/lib/dumpdecrypted.dylib*
执行脱壳操作
1. 寻找App相关关键目录
通过前文介绍过的方式,打开App,并用cycript注入App进程,打印可执行文件目录和文档目录。
cy# [NSBundle mainBundle].executablePath
@"/private/var/containers/Bundle/Application/ED52B70B-2342-4D03-BC87-10CEE955F580/TKVictim.app/TKVictim"
cy# [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0] path];
@"/var/mobile/Containers/Data/Application/679E4AF3-A290-4CA9-8183-BFA2206E3A39/Documents"
2. 执行脱壳
进入文档目录,切换至mobile
用户,然后在执行可执行文件时插入动态库dumpdecrypted.dylib
。
执行成功后文档目录下会生成脱壳后的文件TKVictim.decrypted
。
Toki-iPhone: root# cd /var/mobile/Containers/Data/Application/679E4AF3-A290-4CA9-8183-BFA2206E3A39/Documents
Toki-iPhone: root# su mobile
Toki-iPhone: mobile% DYLD_INSERT_LIBRARIES=/usr/lib/dumpdecrypted.dylib /private/var/containers/Bundle/Application/ED52B70B-2342-4D03-BC87-10CEE955F580/TKVictim.app/TKVictim
mach-o decryption dumper
DISCLAIMER: This tool is only meant for security research purposes, not for application crackers.
[+] detected 64bit ARM binary in memory.
[-] This mach-o file is not encrypted. Nothing was decrypted.
当然,脱壳失败了,我们的TKVictim并没有加壳,所以不会有任何实际效果,建议选择有加壳的App尝试。
3. 拉取脱壳后的可执行文件
假设我们上一步成功执行,本地已经生成了脱壳后的可执行文件TKVictim.decrypted
。
$ scp root@192.168.x.x:/TKVictim.decrypted ./TKVictim.decrypted
网友评论