逆向杂谈
因为我大学期间开发游戏外挂,对于逆向的强大有过不小的认识。能让别人的代码照着自己的思路去走,感觉是蛮好玩的一件事。所以带着好奇心去研究了iOS逆向。对于iOS逆向,很多人只听过《IOS应用逆向工程》,单纯通过书籍还有杂乱的博文,想要入门还是挺难的。其实iOS逆向没想象中那么难,只要我们找到方法。你想想【游戏外挂】只是单纯凭借C++基础/数据结构去逆向一个大型网游,而现在我们有过正向iOS开发经验,逆向苹果App,难度可想而知降了多少。
我们正常的开发是从代码->UI/功能,逆向就是从UI/功能反推回代码。这段时间断断续续学了不少iOS逆向的知识,准备好好整理一遍,分享出来,如有错误欢迎指正!
学习iOS逆向的用处
我简单梳理了一下,iOS逆向能做的事~~
- 了解iOS的底层实现
- 破解别人的软件,实现各种变态的功能(获取隐私数据、微信抢红包、钉钉打卡等等...)
- 保护自己的代码,隐藏隐私数据,隐藏函数
- 上马甲包
- 分析别人的代码架构 - 这个需要你有一定的架构知识
听起来好像很屌样子
学习路线
- 基础篇
-
汇编 (这块比较枯燥但很重要,如果你只是想简单了解逆向的话,可以先跳过后面觉得需要再看)
-
基础知识掌握(Macho文件基础、ASLR、App的签名机制)
-
- 进阶篇
- 对第三方App重签名的方法
- 如何向第三方App注入自己的代码
- 如何HOOK别人的代码(Method Swizzling、FishHook、Logos)
- 常用工具的使用(Class-Dump、Restore-Symbol、LLDB)
- 越狱篇
- 越狱环境下的配置SSH,并支持USB调试
- Cycript的使用
- 砸壳
- Theos插件的开发
- 防护篇
- Theos插件的原理及防护手段
- LLDB的原理及防护手段
连载中... - 如何调用系统级别函数进行反调试
- 如何防护Monkey
- 隐私数据加密,防止被静态分析
- 代码混淆及浅谈上架马甲包的经验
- 项目篇
- 微信抢红包
- 钉钉远程打卡
后续的文章会慢慢的分享出来,目的只是为了扎实基础,技术分享