对一个iOS App进行逆向分析,首先需要砸壳,因为从AppStore中下载的App是加壳的,即加密过的,“砸壳”的过程就是解密的过程。对于公司内部的debug、release版本进行逆向时,不用砸壳处理,可以跳过此步骤。
砸壳工具有多种,常用的是dumpdecrypted 和 Clutch。下面以dumpdecryted为例。

dumpdecryted
从github上下载dumpdecryted源码后,make进行编译,得到dumpdecryted.dylib动态库,接下来利用dumpdecryted.dylib进行注入解密。

%title插图%num

砸壳工具安装完成之后,接下需要定位待解密的的可执行文件,先用ps定位目标应用,打开目标App,使用ps -e命令查看正在运行进程的可执行文件路径,在/var/mobile/Containers/Bundle/Application//TargetApp.app/TargetApp.
下一步就是获取TargetApp的Documents目录,因为需要把动态库复制到沙盒目录下,这里选择Documents目录。在info.plist文件中找到BundleID,后面com即为Bundle ID。然后使用cycript -p TargetApp命令注入进程,调用NSHomeDirectory()函数获取到Home目录,Home目录后加上/Documnets即可。
然后把dumpdecryted.dylib文件复制到Documents目录下。执行以下指令解密:
DYLD_INSERT_LIBRARIES=/usr/lib/dumpdecrypted.dylib /var/containers/Bundle/Application/59CEB222-4C4D-4A34-BC0F-8D38B9E3853D/MyApp.app/MyApp

解决iOS12版本的砸壳问题
然而如果iOS系统版本为12及以上,那么dumpdecryted和Clutch就无法正常使用了,需要使用CrackerXI+。
CrackerXI+的下载源地址为https://repo.netskao.cn/ ,下载后在设置里把CrackerXI Hook打开,在AppList中选择需要砸壳的应用就行了。

%title插图%num%title插图%num

解密后的应用存储在/var/mobile/Documents/CrackerXI,使用pp助手导出该ipa文件,完成砸壳。

%title插图%num