brnpl/Flutter-Reverse-Engineering-Labs
GitHub: brnpl/Flutter-Reverse-Engineering-Labs
一套循序渐进的 Flutter 应用逆向工程实战练习题库,填补了该领域系统化学习资料的空白。
Stars: 41 | Forks: 5
# Flutter 逆向工程实验室
本仓库包含一系列循序渐进的挑战,旨在介绍 Flutter 应用程序的逆向工程。鉴于目前详细解释 Flutter 逆向的博客文章或教程并不多,我决定创建这个仓库,作为一种填补这一空白的实践方式。
其目标是建立坚实的基础,以理解 Flutter 框架的独特特性及其常用的分析技术。
这些挑战采用递进式结构,从基础概念入手,逐步过渡到中级和更高级的技术,例如网络流量拦截和绕过保护机制。
每个挑战包含的不是传统的题解,而是一份详细的、博客文章风格的解答,逐步指导你完成逆向过程,将动手解决问题与相关理论相结合,从而通过实践直接学习相关概念。
## 📋 前置条件
- Android 移动应用程序的基础知识
- 熟悉逆向工程概念
- 熟悉 Frida
- 已 root 的 Android 设备(某些挑战在模拟器上可能无法正常运行)
如果你觉得缺少某些前置条件,强烈推荐以下资源:
- [Android PT (HTB)](https://academy.hackthebox.com/path/preview/android-application-pentesting)
- [Mobile Hacking Lab](https://www.mobilehackinglab.com/)
- [Frida Android Labs](https://github.com/DERE-ad2001/Frida-Labs)
## 🎯 挑战结构
每个挑战目录包含:
- `chall.apk`:挑战的已编译 APK;
- `solution/_images/`:解答中引用的图像;
- `solution/solution.md`:详细的分步解答;
- `source/`:应用程序源文件和构建说明,供想要修改应用程序并进行进一步实验的用户使用;
```
$ tree
.
├── chall.apk
├── solution
│ ├── _images
│ │ ├── chall.png
│ └── solution.md
└── src
├── how_to_build.md
└── main.dart
```
## 🚀 挑战概览
- [chall0](./chall0/):Flutter 简介
- [chall1](./chall1/):Debug 模式 - 源代码泄露
- [chall2](./chall2/):Release 模式 - 查找硬编码机密
- [chall3](./chall3/):Release 模式 - 使用 Frida Hook 1(读取返回值)
- [chall4](./chall4/):Release 模式 - 使用 Frida Hook 2(修改返回值)
- [chall5](./chall5/):Release 模式 - 逆向平台 (Java) 代码
- [chall6](./chall6/):Release 模式 - 拦截 HTTPS 流量
- [chall7](./chall7/):Release 模式 - 绕过完整性检查以拦截流量
- [chall8](./chall8/):Release 模式 - 绕过 SSL Pinning
## 🛠️ 所用工具
其中一些工具需要特定配置。为了简化设置并确保可复现性,本仓库为部分工具提供了 Dockerfile,可在 `/tools` 目录中找到。
工具:
- `apktool` - 用于反编译和重构建 APK 的工具 ([链接](https://apktool.org/))
- `Blutter` - Flutter 应用程序的反编译器 ([链接](https://github.com/worawit/blutter),[本仓库包含 Dockerfile](./tools/blutter/Dockerfile))
- `Frida` - 动态插桩工具包 ([链接](https://frida.re/))
- `jadx` - Android 反编译器 ([链接](https://github.com/skylot/jadx))
- `reFlutter` - Flutter 逆向工程框架 ([链接](https://github.com/Impact-I/reFlutter))
- `Burp Suite` - 用于流量拦截的代理 ([链接](https://portswigger.net/burp))
## 📚 更多资源
- [Flutter 官方网站](https://flutter.dev/)
- [Frida 文档](https://frida.re/)
- [Blutter GitHub 仓库](https://github.com/worawit/blutter)
- [reFlutter GitHub 仓库](https://github.com/Impact-I/reFlutter)
- [Flutter 逆向的复杂性 (作者 Axelle Apvrille, youtube)](https://www.youtube.com/watch?v=JNoEUPlgcZk)
- [Flutter 黑客:揭示开发者的短视 (第 1 部分)](https://infosecwriteups.com/flutter-hackers-uncovering-the-devs-myopia-part-1-6c316be56b13)
- [Flutter 黑客:揭示开发者的短视 (第 2 部分)](https://infosecwriteups.com/flutter-hackers-uncovering-the-devs-myopia-part-2-598a44942b5e)
- [逆向一个使用 Flutter 的 Android 样本](https://cryptax.medium.com/reversing-an-android-sample-which-uses-flutter-23c3ff04b847)
- [Flutter 应用逆向的现状与未来](https://www.guardsquare.com/blog/current-state-and-future-of-reversing-flutter-apps)
- [Dart 反编译中的障碍及其对 Flutter 应用安全的影响](https://www.guardsquare.com/blog/obstacles-in-dart-decompilation-and-the-impact-on-flutter-app-security)
- [经典攻击如何应用于 Flutter 应用](https://www.guardsquare.com/blog/how-classical-attacks-apply-to-flutter-apps)
- [B(l)utter - 利用 Dart 运行时逆向 Flutter 应用](https://conference.hitb.org/hitbsecconf2023hkt/materials/D2%20COMMSEC%20-%20B(l)utter%20%E2%80%93%20Reversing%20Flutter%20Applications%20by%20using%20Dart%20Runtime%20-%20Worawit%20Wangwarunyoo.pdf)
- [从 Android Flutter 应用拦截流量](https://blog.nviso.eu/2019/08/13/intercepting-traffic-from-android-flutter-applications/)
- [在 iOS 和 Android 上拦截 Flutter 流量 (HTTP/HTTPS/Dio Pinning)](https://blog.nviso.eu/2022/08/18/intercept-flutter-traffic-on-ios-and-android-http-https-dio-pinning/)
- [博客 frida-flutterproxy](https://hackcatml.tistory.com/197)
- [在 Flutter 中拦截 HTTPS 通信](https://sensepost.com/blog/2025/intercepting-https-communication-in-flutter-going-full-hardcore-mode-with-frida/)
## 📝 许可证
本项目采用 MIT 许可证分发。有关更多详细信息,请参阅 [LICENSE](./LICENSE) 文件。
## ⚠️ 免责声明
本仓库仅出于教育目的而创建。所述技术仅应在你有权分析的应用程序上或在受控测试环境中使用。作者不对本仓库中包含的信息的滥用承担任何责任。
标签:Android逆向, APK分析, CTF训练, Docker支持, Flutter逆向, Frida, 合规性检查, 安全教育, 抓包 bypass, 目录枚举, 移动安全, 请求拦截