Android程序逆向¶
REVERSE · 知识域。APK/NDK 层逆向。标签:DEX逆向、Native逆向、其他Android程序逆向。
触发特征¶
.apk/.dex文件;Java/Kotlin 层 + native.so混合。
DEX逆向¶
- 工具:jadx(首选)/JEB/apktool;GDA 国产工具。
- 入口:AndroidManifest(exported 组件)→ Application/MainActivity。
- 校验逻辑:字符串比较、加密库调用(SecretKeySpec/ Cipher)定位 key。
- 对抗:混淆(ProGuard/R8/DexGuard)、字符串加密、DEX 壳(梆梆/爱加密/360:dump dex → FDex2/BlackDex/frida-dexdump)。
- 运行时 DEX patch:/proc/self/maps 定位内存 dex(Google CTF 2017);smali 注入绕组件(TAMUctf 2019);新工程引用原 .so 绕加载校验(Codegate CTF 2018)。 -JNI 注册混淆:RegisterNatives 动态注册 → frida hook 定位(HTB WonderSMS)。
Native逆向¶
.so用 IDA/Ghidra 分析(ARM/AArch64);JNI 桥:Java_包名_类名_方法名或动态注册。- 关键:参数解包(jstring → GetStringUTFChars)、返回构造。
- Frida 动态:
- hook native 函数打印参数/返回(
Interceptor.attach)。 - 证书锁定绕过(SSL pinning bypass,h1702ctf 2017)。
- native key dump:内存搜索/函数返回值抓取(HackIT 2017)。
- 栈字符串、Ollvm 混淆 native 层(→ 静态分析对抗)。
其他Android程序逆向¶
- Flutter:Dart AOT 快照 → Blutter 恢复类与方法;无 java 层。
- 鸿蒙 HarmonyOS:HAP/ABC 字节码 → abc-decompiler。
- Unity 游戏:Il2CppDumper + GameAssembly.dll;Mono → dnSpy Assembly-CSharp.dll 运行时 patch(SECCON 2018)。
- APK 签名校验:签名 SHA-256 当 AES key(ASIS Finals 2018)——重新签名后逻辑变化。
- 反调试:TracerPid/su/属性检测绕过(h1702ctf 2017);log 泄露 key(HackIT 2017)。
- 协议层:HTTPS 抓包配合 Frida 绕 pinning;本地 SQLite/assets 加密库分析。
- 加固识别表:梆梆/爱加密/娜迦/360/腾讯乐固特征(assets/lib 名)。
通用流程¶
- apktool/jadx 静态走读 → 定关键函数。
- 壳/混淆先处理(dump dex / 还原符号)。
- native 不清楚 → Frida 动态桥接。
- 校验绕过:patch smali 重打包 或 hook 返回值。
- 重打包签名:
apksigner sign(注意签名相关逻辑)。
工具速查¶
jadx-gui app.apk
frida -U -l hook.js com.target.app
blackdex / frida-dexdump # 脱壳
objdump -d libnative.so # 或 IDA arm64