安卓逆向学习路径

在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破解无名侠师傅)

书籍推荐:姜维大佬的小黄书和非虫大佬的安卓逆向