通过class-dump可以获取到App的头文件,而头文件又有一些属性以及方法等信息,通过这些信息以及界面调试能够大致猜出目的函数的位置。但是由于苹果商店的APP的代码被加密过,在运行时才会解密,因此需要将可执行文件先进行解密。
App解密
通过dumpdecrypted解密
- make: git clone后在当前文件中执行make指令,会将源码编译生成一个dumpdecrypted.dylib动态库。通过该动态库进行解密APP的二进制文件。
主要命令:
1
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib executableFile
DYLD_INSERT_LIBRARIES是一个环境变量,可以让executableFile在启动时,在dyld加载动态库时,通过DYLD_INSERT_LIBRARIES环境变量来加载指定的动态库(dumpdecrypted.dylib),即可达到运行时解密目的~
具体操作:
(1) 将dumpdecrypted.dylib复制到手机中,书上建议复制到APP的沙盒目录的Document目录下。(我试了下放到APP可执行文件同目录下也可以,不过在解密后,生成的解密文件也是在沙盒目录的Document目录下,且dumpdecrypted.dylib也会在Document目录下被复制一份)1
2// 复制到手机命令(也可以通过工具iFunBox)
scp -P 2222 root@localhost:/.../Document /.../dumpdecrypted.dylib(2) 在Document目录下执行DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib executableFile命令得到APP.decrypted文件。
(3) 将APP.decrypted文件拷贝到电脑中,命令参考第一步
通过frida-iOS-dump(该工具由本书作者提供)解密
- 安装:
先安装python的pip工具
手机越狱商店安装frida
Mac在该工具目录下执行sudo pip install -r requirements.txt –upgrade - 使用:
先通过ssh连接到手机,再在该项目目录下执行 ./dump.py appName or appBundleId
得到解密的IPA文件
- 安装:
- 通过clutch解密
(这个具体没用过,也没试过,看书吧。。。而且作者说用这个会经常报错,不推荐这个~)
class-dump
- 目的:
得到App的头文件 安装:
下载地址
将class-dump复制到/usr/bin后, 给class-dump赋予执行权限(sudo chmod 777)使用:
执行命令class-dump –arch arm64 targetApp -H -o outputDir原理(class-dump源码):
通过分析iOS可执行文件或者dylib,即Mach-O文件(通过MachOView工具可以查看Mach-O文件结构),通过Mach-O文件的Section信息可以得到类以及方法等数据的信息,具体怎么解析出来的,请看书或者阅读源码~