一个 Android 逆向学习 / 实战案例合集:基于 Frida 的 Hook、算法还原、抓包、RPC、脱壳、SO 分析与反调试 / 反 Root 绕过。
本仓库是个人在学习和实践 Android 逆向过程中整理的脚本与案例,用于理解 App 的运行时行为、加密逻辑与各种保护/检测机制。
本项目仅供网络安全技术学习与研究。所有调试与测试都应仅在自己拥有或已获授权的设备 / 应用上进行。
请勿将本项目用于任何商业用途或非法用途;请遵守目标应用的服务条款及当地法律法规。因使用本项目产生的一切后果,由使用者自行承担。
Android 逆向的难点往往集中在 SO / Native 层,尤其是带**壳(加固)**和 VMP 保护的应用——这类保护比前端的 JS 混淆强好几个量级,需要汇编、内存、ELF 结构等底层知识。
本仓库从 Frida 基础出发,逐步覆盖 Java 层 Hook、算法、抓包、RPC、脱壳、SO 分析与反检测,是一个持续整理的学习记录。这些是练习与探索案例,不保证每个都完全跑通;其中「得物」SO 脱壳明确未完成(见下文)。
| 目录 | 内容 |
|---|---|
1.frida_basicechnique |
Frida 基础:获取包名、attach / spawn 启动 |
2.frida_method |
常用 Hook 方法:类/方法 Hook、构造 Hook、算法系列、demo |
3.实战 |
实战案例:豆瓣、妹子图、新湖南 |
4.算法 |
Hook 算法工具、数据处理相关脚本 |
5.证书抓包 |
抓包相关(hookvpn.js:VPN 抓包思路) |
7.frida_rpc |
Frida RPC:com.luoge.com、贝壳、拼多多、闲鱼 |
8.脱壳 |
脱壳案例:达川观察、一品查询 |
9.So文件 |
SO 层 Hook:first、second(唯品会) |
10.过frida检测 |
检测 Frida 的方法与绕过(dlopen、init_proc、maps 等) |
11.过root检测 |
Root 检测与绕过(ReverseRoot.js、combined_bypass.js) |
12.so文件脱壳 |
得物 SO 脱壳 / 分析(未完成:SO 有壳 / VMP 保护,脱壳失败) |
- Frida:frida-server / frida-tools / Python 绑定
- JavaScript:Frida 脚本(Hook、内存读写、RPC 导出)
- Python:RPC 调用、自动化脚本
- ADB、jadx、IDA / Ghidra(静态分析、SO 反汇编)
- Frida 注入:
spawn/attach两种启动方式 - Java 层 Hook:方法、构造函数、类加载;AES / MD5 / RSA 等算法还原
- Native / SO 层 Hook:
dlopen、JNI、函数 Hook、内存与汇编阅读 - Frida RPC:把逆向出来的函数暴露给 Python,方便批量调用
- 抓包:证书、双向认证、VPN 抓包思路
- 脱壳:DEX / SO 脱壳思路
- 反调试对抗:过 Frida 检测、过 Root 检测
- 加固 / 壳 / VMP:理解现代保护手段及其难点
- 得物(
12.so文件脱壳):目标 SO 带有壳(VMP 保护),脱壳与分析未成功。这类保护需要汇编、内存、ELF、VMP 解释器分析等底层能力,后续有时间再继续。 - 其余目录是学习过程中的练习记录,部分案例可能只完成到“定位/验证”阶段,不保证全部成功复现,请以「学习思路」看待。
- 不同批次脚本的包名 / 类名 / 参数以当时分析的目标 App 为准,换目标需自行调整。
- 已 root 的 Android 设备 / 模拟器(或相应调试环境)
- 推送并运行与设备架构、Frida 版本匹配的
frida-server - Python 3 +
frida/frida-tools - 部分脚本需要目标 App 或自行调整包名、类名
- 脚本中的包名、类名、接口均来自当时的分析对象;个人凭据 / 令牌 / 设备号已统一做脱敏(占位符),请勿填入真实账号。
- 仅供学习,请尊重目标应用与数据的所有者。
再次声明:本项目仅用于网络安全技术学习。请在他人的授权范围内、或自己的设备上进行测试,切勿用于任何非法用途。