Frida
Frida-ios-dump基于Frida(一款跨平台的轻量级的Hook框架)提供的强大的功能,通过注入JS实现内存dump,然后利用Python脚本自动将内存复制到macOS,从而生成最终的脱壳后的ipa文件。
Frida-ios-dump的原理和dumpdecrypted一样,都是通过把内存汇总已解密的数据dump出来再修复mach-O,dan dumpdecrypted仅能dump主程序,对于框架需要自行修改源代码才能完成,操作比较麻烦。Frida-ios-dump提供的强大功能允许我们一键快速完成脱壳。
使用Frida脱壳要求越狱设备上安装Frida插件。具体操作步骤如下:
1.首先Cydia中添加源Frida源:https://build.frida.re
2.搜索并安装对应版本的Frida。笔者的越狱iPhone是64位的,iOS 版本是10.13.5,所以下载并安装了Frida for pre-A12 devices
3.Mac上在github上下载Frida-ios-dump:https://github.com/AloneMonkey/frida-ios-dump
4.进入本地的Frida-ios-dump目录下执行sudo pip install -r requirements.txt --upgrade
来安装python依赖
注意
:如果这一步安装Python依赖失败:可以尝试手动逐个安装requirements.txt中的python依赖库
5.mac终端执行iproxy 2222 22。把Mac上的2222端口映射到iPhone的22。前提是要保证此时iPhone已经和Mac通过usb进行了连接
注意
:如果这一步出现command not found:iproxy。说明Mac本地还没有iproxy。只需终端执行brew install usbmuxd。在安装usbmuxd的过程中iproxy会被自动安装。安装好后执行iproxy 2222 22
6.电脑当前目录下继续执行./dump.py -l
命令。列出iPhone上当前的所有应用

7.终端执行./dump.py bundleId
即可对app进行脱壳。
注意
:这一步需要我们把app启动
8.脱壳成功后,会在电脑的当前目录新增一个ipa文件。该文件就是脱壳后的APP包。
分离架构
我们最终脱壳出的二进制文件和使用的越狱设备有关。即arm64的越狱设备只能脱壳出arm64的可执行文件。Mach-O通常是胖二进制格式,也就是一个Mach-O文件包含多种架构,比如:arm64、armv7、armv7s等。胖二进制的目的是为了支持更多架构的iPhone。关于每款iPhone的架构可以自行Google。
搞过静态库和动态库的开发者对于分离架构应该并不陌生。在合并和分离二进制文件的时候,我们通常使用lipo命令。lipo是macOS自带的工具,其功能非常强大。下面列举了lipo命令常用的几个命令:
# 查看可执行文件的架构信息
命令格式:lipo -info Mach-O文件
# lipo -info WeChat
# 分离出某种特定架构
命令格式:lipo mach-O文件 -thin 架构类型 -output 分离的mach-O文件
# lipo WeChat -thin arm64 -output WeChat_arm64
# 合并多种架构
命令格式:lipo mach-O文件1 mach-O文件2 -output 合成的mach-O文件
# lipo WeChat_arm64 WeChat_armv7 -output WeChat
补充:查看可执行文件架构还可以使用file命令:
file Mach-O文件
例如:file WeChat
网友评论