"知难而进:热爱iOS逆向"
上一篇文章:"穿越迷雾:iOS逆向之手机越狱的探索之旅"
在上一篇文章中,我详细介绍了iOS逆向工程的准备工作以及如何进行iOS越狱。正如一位朋友所留言的那样,iOS 11.0 - 12.4版本可以使用pwn20wndstuff/Undecimus这个越狱工具,它更加方便实用。如果你的设备运行在iOS 11.0 - 12.4系统上,不妨了解一下这个工具,或许会为你带来更好的使用体验。感谢朋友的推荐!
本文不仅介绍了iOS逆向工程的基本概念和准备工作,还提到了iOS越狱工具的使用建议。对于那些对iOS越狱不太了解的朋友们,我们可以一起探讨并解决这个问题。
希望通过本篇文章的介绍,可以对iOS逆向工程有更清晰的认识,并为大家在iOS设备上的操作提供更多便利与选择。

掌握了逆向技术,就像拥有了一双透视的眼睛,可以轻松洞察应用的内部构造,仿佛城堡尽收眼底。
因此,在开始学习之前,我们需要对逆向有所了解,这样才能更好地掌握这门技术。
逆向技术的学习之路可能会充满挑战,但只要我们保持对知识的渴望和不断的探索,就能够突破困难,站在技术的巅峰,透过逆向技术的视角,洞悉应用世界的精妙之处。
1.iOS逆向学习具备条件
- iOS正向开发者
iOS正向开发者需要具备对iOS语言的深入了解,包括界面组件的使用以及应用依赖的第三方库。同时,他们应该能够轻松定位和分析代码,以便更高效地进行开发工作。
除此之外,iOS正向开发者还应该具备一定的汇编知识,这有助于他们理解应用程序的底层运行机制。关于汇编知识的积累,可以参考您之前写的汇编系列文章。
另外,了解底层知识以及文件系统结构也是必不可少的。这些知识能够帮助开发者更好地理解应用程序的工作原理,并在需要时进行底层调试和优化。
最后,熟悉逆向工具的使用也是iOS正向开发者的重要技能之一。
-
逆向爱好者
已经积累了其他平台的逆向经验,对iOS逆向产生了兴趣的逆向爱好者 -
想学习的爱好者
对学习iOS逆向感兴趣的爱好者,在这里同样受到鼓励。
2.iOS逆向工具
-
逆向过程说实话是枯燥的,但如果你对此感兴趣,一定要亲自动手尝试研究下去。
-
如果你想做好逆向、应用或者插件分析,没有好用的工具,分析起来是非常困难的。
-
在这里提前给大家介绍一下逆向工具。
-
如果你有更好的工具愿意分享,可以留言给我,我会将它们添加到工具文章中。
-
在这里我列出了常用的工具,后续文章中,我会详细介绍这些工具的使用方法。
工具如下:
- 砸壳工具 (Clutch , dumpdecrypted)
- class-dump
- Cycript
- Reveal
- Hopper Disassembler,
- IDA
- LLDB
- Theos等工具
3.逆向流程
选择一款应用进行逆向的大致流程如下:
-
保证你的手机已经越狱及已经下载好你要逆向的应用(前提)
-
对应用进行解密,即进行砸壳操作,以便后续分析。
-
使用class-dump导出头文件,为进行hook做准备,以便后续的代码分析和修改。
-
分析应用界面的布局及控件的使用,了解可能使用到的类文件和关键代码。
-
针对分析结果,对相关类进行hook,并记录参数及方法的调用执行顺序。
-
找到关键的方法或函数,查看其调用堆栈,分析其逻辑。
-
进行静态分析和动态调试,深入分析关键函数的调试逻辑。
-
根据分析结果,修改函数调用逻辑,并验证修改后的逻辑是否与预期一致。
-
运行自己的插件或脚本,以验证逆向操作的效果。
如果你已经完成了前几个步骤,那么基本的逆向操作已经掌握。但是在后续的分析过程中可能会遇到一些困难,不要灰心,多尝试多实践,才能更好地掌握逆向的方法和技巧。
4.iOS逆向工程的作用
-
对于正向开发者来说,深入了解系统原理是非常重要的,可以加深对系统运行机制的理解和掌握。在开发过程中,如果遇到不清楚的系统机制,正好可以通过学习和研究来加深理解。
-
正向开发者也可以借鉴别人的开发功能,实现自己想要的功能。
- 举个例子,在某次公司开发中,需要对网络游戏应用进行加速,并在加速成功后提示用户是否打开已下载的游戏应用。针对这种需求,一种常见的实现方式是使用私有方法,但无法上架到AppStore。因此,需要寻找第二种方法,这时就可以通过逆向分析同类App的功能,了解实现方式,并应用于自己的开发中。
-
分析恶意软件,并对应用进行安全防护,是保护应用安全的重要措施。通过对自己开发的应用进行分析,发现漏洞并及时做出安全保护措施,可以有效提升应用的安全性,防止恶意破坏。在涉及核心内容的应用中,尤其需要加强安全防护措施,以保护应用的完整性和安全性。
5.应用存在的风险
应用存在的风险分2中情况:
- 越狱机
- 非越狱机

越狱机
- 通过Cydia Substrate 提供的注入(Cydia Substrate 是Cydia APP中安装的插件)
- hook模块注入指定的程序,达到篡改程序的功能
非越狱机
- 通过静态的注入
- 使用fishhook修改增加功能fishhook源码地址
- 通过方法交换,修改函数实现逻辑
6.数据加密处理
应用中一般都会存储很多敏感的数据,这些数据一旦以明文的形式写在代码中,应用很容易被破解,数据也就被截获.
关于应用的数据一般都会做加密处理:
- 静态字符串进行加密
- 网络传输,接口参数进行加密
- 本地存储数据进行加密
7.总结
以上内容是对iOS逆向的简要介绍。
对iOS逆向基本知识的学习是必不可少的。
下一篇文章将会对系统内容进行详细介绍。