前期干货
工具:
hopper:对脱壳app进行反汇编、反编译 可以分析app二进制文件
dumpdecrypted:用于脱壳
class-dump:对脱壳app 导出头文件
越狱设备一台(当时是6s Plus ,ios9.2)
越狱后安装有 cydia ,通过cydia安装openSSH,可以通过网段连接到mac
脱壳
步骤:
- 下载 dumpdecrypted源码,然后在dumpdecrypted目录下make,生成dumpdecrypted.dylib文件
- 电脑连接越狱设备(同一网段):ssh root@192.168.13.230
root@192.168.13.230’s password:
openSSH的连接默认密码为:alpine。 - 电脑连上手机后查询当前运行进程 ps -e | grep /var/mobile
此处直接打印出手机安装app的进程 - 将电脑中make生成的dumpdecrypted.dylib文件 使用 scp 指令复制到 手机的/var/tmp/ 目录
- 脱壳指令:6sPlus:/var/tmp root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/6E1CC0B2-4DB7-4F37-B715-FAA317EEC469/WeChat.app/WeChat
此指令只能在当前/var/tmp/ 目录下执行 - 完成后在手机/var/tmp/目录下ls查看,得到WeChat.decrypted文件(目标脱壳文件)
- 将脱壳文件使用scp拷贝到电脑:scp root@192.168.13.230:/var/tmp/WeChat.decrypted /Users/xxx/Desktop
- 使用指令 otool -l WeChat.decrypted | grep crypt (查看是否脱壳)
使用指令class-dump -S -s -H WeChat.decrypted -o ./Headers(dump出头文件)
过程中的坑点:
架构问题:这次越狱设备是arm64架构的,dumpdecrypted编译出的是支持arm64,还有class-dump指令也是直接arm64.如果你越狱设备是armv7的则需要修改配置
iOS9.2越狱设备:在网上查资料,好多说是要将dumpdecrypted.dylib文件拷贝到 目标app的document目录下,可是越狱设备安装了很多app,完全不好确定目标app的document目录,本来可以使用Cycript注入目标进程中(cycript -p WeChat),然后执行[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0] 获取目标进程的Document目录,然后复制文件过去就好。可是实施发现,iOS9.2越狱设备下使用Cycript指令后终端一直卡死,无显示。(设备确认安装了Cycript,应该是Cycript插件不支持iOS9.2),这样就无法获取目标app的document目录!好在发现直接把dumpdecrypted.dylib放在手机的/var/tmp/目录下,执行脱壳指令也是可行的!
重签名app
《How to re-sign Apple’s applications once they’ve been modified》
步骤:
- 查看有效的证书 : security find-identity -v -p codesigning
- 检查目标app签名情况:codesign -dvvv EmojiKeyboard.app
- 删除ipa中之前的签名文件:rm -rf Payload/*.app/_CodeSignature/
- 拷贝新的provision profile替换旧的embedded.mobileprovision(这个provision profile需要是distribution provision,可以找之前项目的) cp 123.mobileprovision Payload/*.app/embedded.mobileprovision
- 重签名:codesign -f -s (name of certificate) /path/to/application
例如:
➜ Payload codesign -f -s “iPhone Developer: xxx@xxx.com (9283B989BB)” xxx.app
xxx.app: replacing existing signature
➜ Payload codesign -dvvv xxx.app