GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

安卓 so 逆向实战项目与靶场

以下是专为初学者设计的 安卓 so 逆向实战项目与靶场,从易到难排序,均提供详细文档且无需商业工具(Ghidra/Frida 即可完成):

✅ 零基础入门首选
1. OWASP UnCrackable Mobile Apps
难度:⭐
目标:逆向原生层 flag 验证逻辑(含 无混淆 so 文件)
内容:
Level 1:简单 JNI 函数(静态注册)
Level 2:动态注册 + 基础反调试
Level 3:OLLVM 控制流平坦化
仓库:github.com/OWASP/owasp-mstg/tree/master/Crackmes
中文教程:《UnCrackable 通关指南》
2. Android Native CTF - Beginner Level (RootBeerSample)
难度:⭐⭐
目标:绕过 Root 检测 so 模块(含字符加密)
技能点:
IDA/Ghidra 字符串搜索技巧
Frida Hook JNI 函数修改返回值
下载:GitHub - EvilCrow/rootbeerSample
工具:adb + frida-trace
📡 进阶实战(含反调试/混淆)
3. Google {% raw %}CTF{% endraw %} Beginner Quest - Reverse Brainstorm
难度:⭐⭐⭐
亮点:ARM 汇编基础教学 + 非标 so 加载
解法:
动态分析 init_array 解密函数 + Hook strcmp
地址:github.com/google/google-ctf/tree/master/2023/rev-beginner-brainstorm
4. KCTF 混淆加固挑战(OLLVM+UPX)
难度:⭐⭐⭐
目标:解压 UPX 壳 + 修复 OLLVM 控制流
工具链:
upx -d 脱壳 → Ghidra Script 反混淆
中文靶场:KCTF 2021 第一题 - 数字游戏
🧩 系统化学习项目
5. Android Native Security Experiments (ANSE)
实验室式场景:包含 12 个渐进式 so 逆向任务:
bash

折叠
复制
1
2
3
4
5
1. JNI 静态注册解析 6. Inline Hook 检测
2. 动态注册定位 7. PLT/GOT Hook 识别
3. 字符串加密还原 8. SSE 指令集优化分析
4. 简单反调试绕过 9. OLLVM 控制流重建
5. Syscall 底层拦截 10. VMProtect 初探
项目地址:github.com/ivan-sincek/android-native-security
🛡️ 企业级加固对抗(学有余力)
6. 梆梆加固社区版样本
说明:国内广泛使用的商业加固方案(需注意法律边界)
研究要点:
DEX 抽取与 so 壳的协同保护
.init_array 中的反调试注入
合法获取:从 梆梆免费版 打包测试 APK
分析工具:
Ghidra + Frida + Dump内存脚本
🔧 初学者工具包建议
工具
用途
学习资源
Ghidra
免费反编译(伪C生成)
Ghidra 入门视频
Frida
动态调试/Hook JNI
Frida 中文手册
ADB + LLDB
原生层断点调试
Android NDK 调试指南
Jadx
查看 Java 调用 so 的上下文
Jadx 使用技巧

💡 法律提示:所有练习请在 自己编译/授权的 APK 上进行,禁止逆向未授权商业应用!

下一步行动:

从 OWASP UnCrackable L1 开始 → 用 Ghidra 打开 libfoo.so 找 Java_sg_vantagepoint_uncrackable1_codecheck()
尝试用 Frida 修改返回值:
javascript

折叠
保存
复制
1
2
3

Interceptor.attach(Module.getExportByName("libfoo.so", "check_flag"), {
onLeave(retval) { retval.replace(0x1); } // 强制返回 true
});
需要具体靶场分步指导?随时告知!

posted on 2025-08-12 19:10  GKLBB  阅读(156)  评论(0)    收藏  举报