安卓逆向学习路径
在52破解上看到的一篇安卓逆向的学习路线,这里记录一下,以便后续使用
基础学习
- 熟练使用AndroidKiller、Jeb等工具
- 了解smali语言,能够将简单的sali语句翻译成java
- 能够使用AndroidStudio进行java层面的动态调试
- 了解arm汇编语言
- 从0到一编写一个so文件
- 能够配合ida对so成进行动态调试
- 配合so层的编写经验实现自己的反调试代码,并一一动手调试过掉这些反调试
- 总结:java和smail语言基础;arm架构汇编;熟练使用相关工具;自己实现so
基础学习:《教我兄弟学Android逆向系列课程+附件导航帖》 - 『移动安全区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
进阶技能
- 了解安卓apk包的架构,能解析apk的各种文件,例如dex、xml文件
- 了解动态加载的技术
- 学习安卓第一代壳(落地加载壳)的加固方案然后自己动手实现
- 学习frida,会使用frida编写简单的脱壳机
- 学习安卓第二代壳(不落地加载壳)的加固方案有条件就自己实现一下
- 针对第一代壳和第二代壳的加载点无论是使用动态调试还是hook的方法脱壳修复
- 了解第三代壳(函数抽取式壳)和第四代壳(vmp)的原理
- 学会使用或者自己编写针对第三代壳的脱壳机,例如:fart、frida-unpack等等
- 能自己解析so文件,也就是elf文件,这是后面so层加密加固的前提
- 有时间可以学习一下unicorn框架,github上已经有基于unicorn的so调用器,名字叫啥忘了
- 学习so层的一些加密加固方案
- 然后还要ollvm框架,ollvm用来对抗ida的分析那滋味是真的酸爽(52破解无名侠师傅)
书籍推荐:姜维大佬的小黄书和非虫大佬的安卓逆向