IOS 如何学习iOS逆向工程(干货!!!)

cz-add · 2021-01-29 14:33:26 · 热度: 109

逆向工程
逆向工程是一种产品设计技术再现的过程,对某一目标产品进行静态或动态分析研究,从而演绎得出该产品的处理流程,功能结构以及技术构成等设计要素,然后把分析出来的技术用于自己的产品。

    逆向分析的作用:

                ①:缩短开发周期

                ②:降低开发成本

                ③:寻找技术突破

语言入门
如果你要逆向分析iOS应用相关的东西,当然你得熟悉Object-C这门语言,不要求对开发了解的多么深入,但是首先得能理解它的语法,看懂Object-C的代码,并能够自己用这门语言写一些简单的应用及功能模块。

熟悉工具
逆向工程往往需要借助一些工具,首先需要准备一台越狱的机器,能够熟练使用以下工具:

        ①openSSH:登录越狱机器,进行文件传输等等。

        ②Cycript:运行一些动态js脚本。

        ③lldb:动态调试应用,查看运行时变量的值。

        ④class-dump: 导出应用头文件,查看应用类和成员信息。

        ⑤Keychain dumper:导出越狱设备的keychain。

        ⑥Snoop-it,introspy:动态追踪分析工具。

        ⑦Hopper,IDA:静态反汇编分析工具。

        ⑧theos:开发tweak,进行动态hook。

推荐《iOS应用逆向工程》这本书,作者拥有多年逆向开发实践经验,可以跟着里面讲的知识慢慢学习。总之,一定要实践,一定要实践,一定要实践!(重要的事说三遍)

继续深入
文件结构
再深入一些的话,需要熟悉macho文件结构,包括它的构成,每一部分的作用,以及动态加载过程,然后可以进一步看看class-dump的源码。

深入原理
使用工具,决不能只停留在 工具 的表面,一定要知道工具内部是怎么实现的,它的原理的是什么,自己是不是可以对它进行改进等等,比如theos的原理,Method Swizzling,fishhook等等。

知己知彼
再说到逆向分析其实就是一个“攻”的过程,那么肯定不是一帆风顺的,有攻就有防,现在很多应用对于防止被逆向分析也做了很多不同的措施比如:反注入,反调试,反反汇编这些。作为一个逆向分析者,同时也需要对防的过程和可能使用的方法有一定的了解,才能更好的去寻找突破口。

熟悉汇编
静态分析中难免需要去阅读汇编代码,知道各种寄存器的作用,以及对堆栈的操作过程。

后续建议
① 多关注一些github开源项目,包括上面说的那些

         ② 多关注国内国外博客论坛,比如:逆向未来,iosre

         ③ 多实践,看再多的东西,都要实践出来

我博客的部分笔记:iOS 安防 优化
优化iOS小技巧
iOS 内存管理总结
iOS开发—-数据结构
iOS安全攻防—常用工具
iOS 多线程 线程间的状态
iOS安全:Mach-O Type
iOS 各种UI控件属性设置
iOS安全基础之钥匙串与哈希
iOS自动化布局-AutoLayout约束优先级
查看原文

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册