iOS程序破解与调试基础
由于苹果正常情况下的app主要通过app store下载,而在上传到app store时会被进行drm保护。被保护后的ipa无法直接分析,也无法进行相关的patch,因此,对ipa的破解,获取其真实的代码,资源数据就尤为重要,也因此是每一个app逆向分析的首要步骤。
破解app的方法
目前破解app已经有专门的工具,均需手机越狱,其中有gui的crakulous.以及命令行的clutch,
以clutch为例:
在越狱后的机器上打开terminal:
使用login进入根权限后。输入
Clutch,将显示当前的app名及序号,再次输入
Clutch (对应的app序号)则开始破解该app。
如上图,我们选取的是某游戏的app进行破解
破解后的ipa被保存在/var/root/documents/cracked/下
利用如91助手的文件管理功能,将ipa下载到电脑中。
再利用ida(6.1及以上版本)打开ipa进行分析得到:
二、调试
Ios app的调试,主要利用openssh+gdb的方式。
在进行调试之前,首先须确保手机越狱,而后通过cydia在手机中安装下列软件:
Openssh(搭建ssh通道,实现远程登录用)
Terminal(ios上的终端程序,可实现命令行控制,同时也可由putty远程利用openssh的通道登录)
Adv-cmd(提供更复杂的命令行指令)
安装以上三个软件后。利用无线进行手机与笔记本的连接:
1 可利用无线网络,让手机与笔记本加入同一无线网络中
2 可利用笔记本本身的无线功能,由笔记本本身创建临时无线网络,让手机加入该网络
处于同一网络后,查看手机的网络地址:
点击红框中的箭头,则看到ip地址:
(手机安装openssh,terminal后)利用putty远程登录
此时即可利用gdb调试了,在手机中打开我们想要调试的进程(某单机游戏为例)。于手机中打开该游戏后。在putty中输入ps -ax(需手机安装adv cmds):
找到了对应的进程,此时如普通的linux控制台,使用gdb -p 10540则可挂上该进程进行调试:
利用disas指令即可查看反汇编代码:
这样,利用gdb的动态调试功能,结合ida的静态分析功能。则可实现对手机进行逆向分析调试的目的。