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, 目录枚举, 移动安全, 请求拦截