苹果机之静态分析 | 看一看别人的代码

时间:2021-10-04 14:09:02

那别人是怎么做的?

某些时候,特定是犹豫的时候,想看一下别人都是怎么弄的。

那我可以改写这个程序吗?让它按我的意愿来运行。

某些时候,你想注入一个程序,所以想先看一下这个程序的流程与结构是怎么样的。

对于苹果上的app,联合clutchclass-dump两个伟大的工具,可以如意如意如你意。

先用clutch破解出ipa文件,再用class-dump来分析出程序的结构。

苹果机之静态分析 | 看一看别人的代码

(一)clutch

找到目标app对应的.ipa文件并不能,比如在网上下载、通过pp助手之类备份出ipa文件,等等。但并不是所有ipa文件都能用class-dump来分析出结构,只有那些已经破解了的ipa才能被分析出来。

哪些ipa是经过了破解的?

* 经过clutch后的ipa是解密了的。
* 经过手机内的pp助手之类安装的ipa是解密了的,导到电脑(比如用itools)后就可以class-dump到明文。

对手机内的app进行clutch,是得到已破解ipa的有效办法。

(1)获取与使用

应该使用clutch的最新版本,特别是对于ios10.x的系统。

可以在https://github.com/KJCracks/Clutch/releases下载(下载-debug版本)。

把clutch拷贝到手机的/usr/bin目录。

./Clutch -?     --查看选项
./clutch -i --查看可以破解的软件
./clutch -d x --根据序号来破解

(2)拷贝ipa到电脑

根据clutch破解后的路径,拷贝ipa到pc上并改名为.zip来解压,在pc上用class-dump-z或class-dump对里面的应用(最好是对xxx.app里面的xxx作class-dump,因为参数命名会比直接对xxx.app分析到的要准确)作分析。

(二)class-dump

class-dump或class-dump-z,都可以分析出程序结构,使用上相似。

(1)获取

class-dump-z:

wget http://networkpx.googlecode.com/files/class-dump-z_0.2a.tar.gz
解压后,拷贝到bin目录:
sudo cp mac_x86/class-dump-z /usr/local/bin

class-dump:

http://stevenygard.com/projects/class-dump 查找并下载,或者直接:
下载 http://stevenygard.com/download/class-dump-3.5.tar.gz
把class-dump拷贝到/usr/local/bin目录,并chmod +x class-dump。

(2)使用

class-dump-z Payload/QQ.app/QQ > ../../dumpinfo --所有信息放到一个文件
class-dump -H Spotify.app -o ../headers --这种方式可以分出不同的文件

class-dump -A -a Spotify.app > ../../addressinfo --带有地址信息
根据函数的地址,可以用gdb或lldb来下断点调试。

class-dump也可以指定指令集,比如--arch arm64。

(三)分析dump出来的信息

这一步很可能需要耐心,在茫茫码海中寻找真爱,甚至需要结合动态调试或注入输出log的办法来定位目标代码。

动态调试在后续介绍。