- 打基础(必不可少)
Java基础:能熟练看懂、编写 Java 代码(因为Android绝大部分代码是Java/Kotlin写的,逆向也要看smali汇编,和Java关系很大)。
Android开发基础:了解APK的结构(如AndroidManifest.xml、dex文件、资源文件等),掌握Activity生命周期、四大组件、基本通信机制(Intent、Binder等)。
Linux基础:因为Android系统是基于Linux的,了解基本的命令操作和系统结构。
- 进阶知识
smali语言:熟悉dex文件反编译成的smali代码(基本的指令、寄存器用法)。
APK打包、签名流程:了解APK如何生成,如何签名、验证签名,这关系到反编译后如何重新打包。
DEX文件格式:了解DEX文件的基本结构(类定义、方法定义、字符串表、Proto等)。
加固与反加固原理:常见的加壳方式、脱壳流程了解一下。
- 工具熟练掌握
必会工具:
Jadx / JADX-GUI(dex反编译查看Java代码)
Apktool(反编译apk到smali、修改资源、重新打包)
JEB / GDA / IDA Pro / Hopper(逆向分析dex/so文件)
Frida(动态插桩神器,拦截函数调用、修改行为)
Xposed框架(hook Android系统API)
Android Studio + adb调试
objection、gdb、radare2(进阶调试)
- 实战训练
逆向简单App:找一些未加壳、无混淆的小应用,反编译后熟悉流程。
破解注册机、绕过登录验证:如破解App的VIP检测、修改接口返回值等。
逆向加壳App:学习如何识别壳、脱壳、提取真实dex。
动态分析so文件:比如微信、支付宝这类App,很多关键逻辑放在C/C++ so库中,要学习动态调试so。
- 安全领域深入
学习常见防护机制:反调试、防HOOK、防重打包、签名校验等。
加固识别与对抗:如梆梆加固、腾讯乐固等方案,如何识别,如何脱壳。
逆向通信协议:逆向APP的加密协议(如加密接口参数、签名算法)。