那别人是怎么做的?
某些时候,特定是犹豫的时候,想看一下别人都是怎么弄的。
那我可以改写这个程序吗?让它按我的意愿来运行。
某些时候,你想注入一个程序,所以想先看一下这个程序的流程与结构是怎么样的。
对于苹果上的app,联合clutch跟class-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的办法来定位目标代码。
动态调试在后续介绍。