美文网首页
【Toki从零学iOS逆向】五、App可执行文件脱壳

【Toki从零学iOS逆向】五、App可执行文件脱壳

作者: TokiHunter | 来源:发表于2022-09-12 01:00 被阅读0次

目录

运行环境

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

相关文章

网友评论

      本文标题:【Toki从零学iOS逆向】五、App可执行文件脱壳

      本文链接:https://www.haomeiwen.com/subject/qczanrtx.html