要进行iOS逆向工程,建议掌握iOS应用的开发相关知识,相信看本文的读者应该都具备。 进行iOS逆向工程的一个关键就是工具的使用,工欲善其事,必先利其器。用好工具可以事半功倍。甚至可以做之前可能根本没想到能够做的事情。
这里介绍的工具可以分为如下几类:
- UI分析工具
- 文件系统查看工具
- 数据库查看工具
- 网络分析工具
- 逆向程序开发工具
- 反汇编工具
- 调试器
UI分析工具
UI分析工具是对iOS应用的UI进行分析的工具,有Reveal和PonyDebugger等。
Reveal能够在运行时调试和修改iOS应用程序。它能连接到应用程序,并允许开发者编辑各种用户界面参数,这反过来会立即反应在程序的UI上。就像用FireBug调试HTML页面一样,在不需要重写代码、重新构建和重新部署应用程序的情况下就能够调试和修改iOS用户界面。 --InfoQ
使用Reveal的效果如图:
使用PonyDebugger的效果如图:
文件系统查看工具
在iOS设备上可以安装iExplorer, iFunbox, iTool等工具,可以查看iOS应用的文件系统结构。
使用iFunbox打开陌陌的文件目录,如下图所示:
网络分析工具
使用Tcpdump, WireShark, Charles等工具可以对应用的网络数据进行分析。
使用Charles对网络数据包进行分析的示意图:
逆向程序开发工具
开发越狱程序和日常开发的iOS程序很相似,不过,越狱程序能做更强大的事情。你的设备越狱之后,你就能够hook进Apple提供的几乎所有的class,来控制iPhone/iPad的功能。
Theos大幅简化了编写越狱程序的流程,后面会对该工具进行详细的介绍。
反汇编工具
IDA Pro是一款非常强大的反汇编工具,甚至能够将汇编代码转换成近似于源码的伪代码。
如下图所示[1]:
可以看到,基本上相当于源码。
调试器
在iOS逆向工程中,可以使用gdb来对iOS应用进行动态分析,进行单步调试,也可以使用Cycript来对iOS进行动态分析。
本文简要介绍了iOS逆向工程要用到的工具,后面的文章会对用到的工具做进一步的介绍。