专注于学习逆向工程Flutter应用的实践挑战。
该仓库包含一系列渐进式挑战,旨在介绍Flutter应用的逆向工程。由于没有太多博客文章或教程详细解释Flutter逆向,我决定创建这个仓库作为实践方式来填补这一空白。
目标是建立一个坚实的基础,以理解Flutter框架的独特特性以及常用的分析技术。
这些挑战按递进结构设计,从基本概念开始,逐步进阶到中间和更高级的技术,例如网络流量拦截和保护绕过。
每个挑战不是传统的解题报告,而是包含一个详细的、博客风格的解决方案,逐步指导你完成逆向过程,结合实践问题解决和相关理论,使概念通过实践直接学习。
如果你觉得缺少任何先决条件,强烈推荐以下资源:
每个挑战目录包含:
chall<X>.apk:挑战的编译APK;solution/_images/:解决方案中引用的图片;solution/solution.md:详细的分步解决方案;source/:应用源代码和构建说明,供想要修改应用并进一步实验的人使用;$ tree
.
├── chall<X>.apk
├── solution
│ ├── _images
│ │ ├── chall<X_Y>.png
│ └── solution.md
└── src
├── how_to_build.md
└── main.dart
其中一些工具需要特定配置。为简化设置并确保可复现性,为部分工具提供了Dockerfile,可在/tools目录中找到。
工具:
apktool - 用于反编译和重建APK的工具(链接)Blutter - Flutter应用的反编译器(链接,本仓库中的Dockerfile)Frida - 动态插桩工具包(链接)jadx - Android反编译器(链接)reFlutter - Flutter逆向工程框架(链接)Burp Suite - 用于流量拦截的代理(链接)本项目基于MIT许可证分发。详情请参阅LICENSE文件。
本仓库仅供教育目的创建。所述技术应仅用于你有权分析的应用或受控测试环境。作者对滥用本仓库信息不承担任何责任。