文章总结: reFlutter是一个用于Flutter应用逆向分析的框架,核心功能包括流量拦截、代码信息提取及绕过SSL证书锁定。文档详述了工具安装、APK与IPA处理流程、BurpSuite代理配置及Dump文件提取方法。重点提及Flutter3.24.0及以上版本需手动配置设备代理,并介绍了应用签名与自定义引擎构建步骤。内容实战性强,为移动安全测试提供了有效指导,同时强调了法律合规性与版本兼容性注意事项。 综合评分: 90 文章分类: 逆向分析,移动安全,安全工具,渗透测试
告别证书锁定:使用reFlutter轻松实现Flutter应用流量拦截与动态分析
柠檬赏金猎人
2026年2月27日 10:00 广东
概述
reFlutter 是一个功能强大的Flutter应用逆向工程框架。它通过使用预先编译并修改过的Flutter库,帮助安全研究人员和开发者对Flutter应用进行逆向分析。该框架的核心是修改了Flutter库的快照反序列化过程,并集成了流量监控、类与方法信息打印等功能,为动态分析提供了极大的便利。
技术/功能
reFlutter 框架具备以下关键特性:
- 流量拦截与监控:通过修改
socket.cc文件,实现对应用网络流量的监控和拦截,便于分析API调用。 - 代码信息提取:修改
dart.cc文件,能够在应用运行时打印出Dart类、函数以及部分字段的信息,并显示函数的绝对代码偏移量。 - 绕过证书锁定:能够帮助绕过某些Flutter应用的SSL证书锁定实现,方便进行中间人攻击测试。
- 快照哈希支持:支持通过快照哈希匹配对应的Flutter引擎版本,确保补丁兼容性。
- 多平台与引擎支持:
- 平台:Android (arm64, arm32), iOS (arm64)
- 发布渠道:Stable, Beta
- 自定义构建:提供Dockerfile,支持用户手动修改Flutter源码并构建自定义的补丁引擎。
使用示例
1. 安装
reFlutter可以通过pip直接安装:
pip3 install reflutter==0.8.6
2. 基本使用
对APK或IPA文件进行处理:
# 处理Android APK
impact@f:~$ reflutter main.apk
Please enter your Burp Suite IP: 192.168.1.100
SnapshotHash: 8ee4ef7a67df9845fba331734198a953
The resulting apk file: ./release.RE.apk
Please sign the apk file
# 处理iOS IPA
impact@f:~$ reflutter main.ipa
3. 流量拦截配置(以Burp Suite为例)
- 在Burp Suite中配置代理监听器:
- 端口:8083
- 绑定地址:所有接口
- 请求处理:支持不可见代理 = True
- 对于Flutter 3.24.0及以上版本:由于硬编码代理IP已被移除,需要在设备上直接配置代理。
- Android:使用ADB命令
adb -s <device> shell "settings put global http_proxy <proxy_ip:port>" - iOS:需要在设备上使用如Potatso等工具配置代理。
4. 应用签名与安装(Android)
处理后的APK需要签名和对齐。推荐使用uber-apk-signer:
java -jar uber-apk-signer.jar --allowResign -a release.RE.apk
然后安装并运行签名后的APK。
5. 提取Dump信息
应用运行后,逆向出的Dart代码信息会被写入一个dump文件。
- Android:文件位于
/data/data/<应用包名>/dump.dart。使用ADB拉取:
adb -d shell "cat /data/data/com.example.app/dump.dart" > dump.dart
- iOS:文件路径会打印在Xcode控制台日志中,格式类似
/private/var/mobile/Containers/Data/Application/<UUID>/dump.dart,需要从设备中提取。
dump文件内容示例:
Library:'package:anyapp/navigation/DeepLinkImpl.dart'
Class: Navigation extends Object {
String* DeepUrl = anyapp://evil.com/ ;
...
}
6. 自定义引擎构建
如果需要修改Flutter源码或构建特定引擎,可以使用Docker进行自定义构建:
git clone https://github.com/Impact-I/reFlutter && cd reFlutter
docker build -t reflutter -f Dockerfile .
运行构建容器(示例为构建Android arm64):
docker run -it -v "$(pwd):/t" -e HASH_PATCH=aa64af18e7d086041ac127cc4bc50c5e -e COMMIT=d44b5a94c976fbb65815374f61ab5392a220b084 reflutter
可以通过环境变量控制构建目标:
-e x64=0: 禁用x64构建-e arm64=0: 禁用arm64构建-e arm=0: 禁用arm32构建-e WAIT=300: 设置构建前等待修改源码的时间(秒)
注意事项
- 法律与道德:仅将reFlutter用于授权范围内的安全测试、个人学习或研究。未经授权对他人应用进行逆向分析可能违法。
- Flutter 3.24.0+ 代理配置:对于较新的Flutter版本,框架不再硬编码代理设置,必须在测试设备上手动配置系统或应用级代理。
- 应用签名:处理后的APK文件必须重新签名才能在Android设备上安装运行。
- 引擎兼容性:确保使用的补丁引擎快照哈希(SnapshotHash)与目标应用使用的Flutter引擎版本匹配,否则可能导致应用无法运行。
- Root/越狱:Android上进行流量拦截通常不需要Root权限,但文件提取可能需要。iOS操作通常需要越狱设备。
- 依赖环境:自定义构建需要完整的Docker环境以及对Flutter引擎编译有一定了解。
参考链接
- https://github.com/Impact-I/reFlutter
- https://swarm.ptsecurity.com/fork-bomb-for-flutter/
- https://github.com/patrickfav/uber-apk-signer
仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:柠檬赏金猎人 《告别证书锁定:使用reFlutter轻松实现Flutter应用流量拦截与动态分析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论