对于初开始学习iOS逆向工程的人来说,实现一个tweak
可以算是入门逆向工程了。当然了,可能你现在还不知道tweak
是什么。简单来说,你可以把一个tweak当作某一个app的一个插件(类似于浏览器广告屏蔽插件)。在app运行的时候,tweak会hook住某个函数,然后在hook的函数里面,你可以插入你的代码。比如用户在登陆微信账号的时候,tweak可以hook住登录函数,dump出用户的账号密码。那问题来了,我们要如何知道哪个函数是账号登录函数咧?这就涉及到我们如何去分析一个iOS app
要进行iOS逆向工程,建议掌握iOS应用的开发相关知识,相信看本文的读者应该都具备。 进行iOS逆向工程的一个关键就是工具的使用,工欲善其事,必先利其器。用好工具可以事半功倍。甚至可以做之前可能根本没想到能够做的事情。
这里介绍的工具可以分为如下几类:
- UI分析工具
- 进程分析工具
- 文件系统查看工具
- 数据库查看工具
- 网络分析工具
- 逆向程序开发工具
- 反汇编工具
- 调试器
- 性能监控工具
- crash分析工具
UI分析工具
UI分析工具是对iOS应用的UI进行分析的工具,有Reveal和PonyDebugger等。
Reveal能够在运行时调试和修改iOS应用程序。它能连接到应用程序,并允许开发者编辑各种用户界面参数,这反过来会立即反应在程序的UI上。就像用FireBug调试HTML页面一样,在不需要重写代码、重新构建和重新部署应用程序的情况下就能够调试和修改iOS用户界面。 --InfoQ
使用Reveal的效果如图:

使用PonyDebugger的效果如图:

进程分析工具
文件系统查看工具
在iOS设备上可以安装iExplorer, iFunbox, iTool等工具,可以查看iOS应用的文件系统结构。使用iFunbox打开陌陌的文件目录,如下图所示:

网络分析工具
使用Tcpdump, WireShark, Charles、httpscope等工具可以对应用的网络数据进行分析。
使用Charles对网络数据包进行分析的示意图:

逆向程序开发工具
开发越狱程序和日常开发的iOS程序很相似,不过,越狱程序能做更强大的事情。你的设备越狱之后,你就能够hook进Apple提供的几乎所有的class,来控制iPhone/iPad的功能。
Theos大幅简化了编写越狱程序的流程,后面会对该工具进行详细的介绍。
反汇编工具
可执行代码分析
- dumpdecrpted
- class_dump,class_dump_z,classdump_dyld
- Disassemblers
- IDA
- Hopper
- otool
- strings
- nm
IDA Pro是一款非常强大的反汇编工具,甚至能够将汇编代码转换成近似于源码的伪代码。
如下图所示[1]:

可以看到,基本上相当于源码。
调试器
运行时分析
- GDB/LLDB
- Cycript
- Logify
- weak_classdump
- InspectiveC
本文简要介绍了iOS逆向工程要用到的工具,后面的文章会对用到的工具做进一步的介绍。
性能监控工具
手把手教time profiler