以一个腾讯乐固(Legu)加固的 Android 应用为案例,记录动态脱壳 → 反编译 → Native 层逆向 → 加密验证的完整方法论、思路与踩坑。
⚠️ 声明:本仓库仅用于安全研究与技术学习。不包含目标应用的 APK、反编译源码、native 库、任何密钥或凭据——这些均为第三方专有/敏感内容,不予公开。仓库只含原创的方法论文档与自研脚本。请勿将本文技术用于侵犯他人版权或未授权的用途。
docs/01-apk-and-packing.md— APK 结构与加固识别docs/02-unpacking.md— 动态脱壳原理与抗-dump 对抗docs/03-decompile.md— 反编译与源码分析(占位,待补)docs/04-native-jni.md— Native 层与三层架构(占位,待补)docs/05-crypto.md— 加密分析:动态调用 + 独立复现(占位,待补)docs/06-protocol.md— 协议与抗封层(占位,待补)docs/07-methodology.md— 逆向方法论与心法(占位,待补)REPORT.md— 案例分析报告(脱敏)
| 脚本 | 作用 |
|---|---|
scripts/frida/hook_crypto.js |
监控 dlopen 加载目标库,hook 加密/伪装函数并打印数据+调用栈 |
scripts/frida/call_encrypt.js |
加载 native 库,主动调用加密函数验证算法(纯 native,无需 Java bridge) |
scripts/frida/force_load.js |
通过 Java 层主动 loadLibrary 强制加载目标库 |
scripts/frida/probe.js |
运行时探测模块是否加载、符号能否定位 |
scripts/frida/runner_spawn.py |
frida spawn 模式启动器(进程创建即挂 hook) |
scripts/frida/runner_attach.py |
frida attach 模式启动器 |
scripts/shrink.py |
截图降采样为极小灰度图(逆向时"看一眼"界面,避免上下文膨胀) |
scripts/rpc.sh |
curl 直连 IDA MCP 插件(localhost:13337)的 JSON-RPC 封装 |
root 模拟器/设备 · frida + frida-server(版本需匹配) · frida-dexdump · jadx · aapt · IDA Pro + ida-pro-mcp