逆向工程
逆向工程是一种产品设计技术再现的过程,对某一指标产品进行动态或动态分析钻研,从而演绎得出该产品的解决流程,性能构造以及技术形成等设计因素,而后把剖析进去的技术用于本人的产品。
逆向剖析的作用:
①:缩短开发周期
②:升高开发成本
③:寻找技术冲破
语言入门
如果你要逆向剖析 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 束缚优先级