Flutter应用的逆向分析通常从解析编译后的Dart代码和拦截网络流量入手,并依赖专门的工具。以下是核心方法、工具和操作流程的梳理:
主流的Flutter逆向分析工具,并按动态/静态分析、抓包Hook、综合套件进行了分类
🛠️ 核心分析工具
这是逆向工作的主力,分为动态和静态两大流派:
reFlutter
类别: 动态分析
主要功能: 通过重打包并修改Flutter运行时(
libapp.so),在App运行时Dump出函数名、偏移地址等元数据(生成dump.dart),并自动注入代理设置以方便抓包-。特点与局限: 动态获取信息,维护成本相对较低,能绕过抓包难题。但需要重打包应用,可能触发签名或root检测。对新版本的官方支持可能有延迟。
https://github.com/Impact-I/reFlutterBlutter
类别: 静态分析
主要功能: 直接静态解析
libapp.so文件,反编译出带符号的汇编代码,并生成用于Hook的Frida脚本和对象池信息文件(pp.txt,objs.txt)。特点与局限: 无需运行应用,适合深入分析代码逻辑。但分析门槛较高,输出为汇编代码,且不直接处理网络抓包。
JEB(商业软件)
类别: 静态分析 (GUI工具)
主要功能: 其Dart AOT快照解析插件可以直接加载
libapp.so,解析出函数、类等信息,并提供一定的反编译视图。特点与局限: 图形化界面,对特定版本范围(如Dart 2.10到2.17)支持较好。但作为商业软件需购买,且版本更新可能滞后于Dart SDK的快速迭代。
Doldrums
类别: 静态分析
主要功能: 一个开源的Dart快照分析器,用于从快照中提取信息。
特点与局限: 已基本停止维护,仅支持非常旧的Flutter版本(如2.10, 2.12),目前实用性很低。
🔌 抓包与Hook辅助工具
这类工具专门解决Flutter应用独特的网络抓包和运行时Hook难题。
Frida脚本 (BoringSSL Hook)
类别: 动态Hook
主要功能: 由于Flutter使用BoringSSL进行证书校验,不走系统代理,需要编写或使用现成的Frida脚本Hook
libflutter.so中的证书验证函数(如ssl_crypto_x509_session_verify_cert_chain),强制返回true以绕过校验。特点: 是配合代理抓包的关键步骤,无论是否使用reFlutter都可能需要。
flutter逆向助手
类别: 动态分析/辅助工具
主要功能: 一个基于reFlutter思路优化的工具,旨在简化使用流程(如免重打包,通过替换so文件实现)。
特点与局限: 同样依赖快照哈希(Snapshot_Hash)识别版本,若哈希被抹除则无法使用。
📦 综合套件
这是一些集成了多种逆向功能(包括Flutter分析)的工具箱。
RevEngi App
类别: 综合逆向工具箱
主要功能: 一个集成了Smali语法参考、DEX修复、Flutter分析(包含Blutter)、JNI分析等多种功能的客户端应用。
特点: 提供了图形化界面,方便移动端或桌面端使用,适合需要多方位逆向的场景。
💡 如何选择工具?
你可以根据分析目标,参考以下建议:
目标是抓包和快速了解应用结构:
首选 reFlutter,它提供了从Dump信息到设置代理的一站式解决方案。
遇到证书校验时,配合 Frida脚本 进行Hook。
目标是深入分析核心算法或业务逻辑:
首选 Blutter,它能提供带符号的反汇编代码,更利于静态分析。
使用 IDA Pro 或 Ghidra 加载分析Blutter输出的结果。
希望使用图形化工具:
可以考虑 JEB(商业)或 RevEngi App(免费),它们提供了更友好的操作界面。
一个典型的结合使用流程:
用 reFlutter 获取函数偏移并解决抓包问题。
用 Blutter 对关键函数进行更深入的静态反汇编分析。
使用 Frida 根据两者提供的信息,对关键函数进行动态Hook和调试验证
🛠️ 主要工具与核心方法
目前主流工具是 reFlutter 和 Blutter,它们原理不同,适用场景互补。
1. reFlutter:运行时分析
原理与特点:通过重打包APK,在运行时
libapp.so中注入代码,实现函数信息Dump和代理设置。属于动态分析。主要功能:生成函数信息文件 (
dump.dart);注入代理,便于HTTPS抓包。适用场景:适合需要拦截并分析网络请求,或快速获取函数映射关系的场景。
局限:需修改并重签名应用,可能触发加固或签名校验。
2. Blutter:静态分析
原理与特点:直接静态解析
libapp.so文件,无需运行应用。属于静态分析。主要功能:反编译出带符号的汇编代码;生成用于Hook的Frida脚本;导出Dart对象池信息。
适用场景:适合深入分析应用逻辑、算法,或在无法运行应用时使用。
局限:输出为汇编代码,分析门槛较高;不直接处理抓包。
简单来说:想抓包或快速探测,选reFlutter;想深入分析代码逻辑,选Blutter。两者也常结合使用。
📡 解决HTTPS抓包难题
Flutter应用默认不走系统代理且有独立证书校验,抓包常用两种方法:
使用reFlutter:重打包时已注入代理,安装修改后的APK即可直接抓包。
Frida Hook证书校验:找到
libflutter.so中BoringSSL的证书验证函数(如ssl_crypto_x509_session_verify_cert_chain),用Frida Hook并强制其返回true。这种方法无需重打包。
🔬 逆向分析通用流程
一个典型的分析流程会结合多种工具:
获取代码信息:
使用reFlutter生成包含函数偏移地址的
dump.dart文件。或使用Blutter反编译出带符号的汇编代码文件。
静态分析定位:用IDA Pro等工具加载libapp.so。结合dump.dart中的偏移地址或Blutter生成的符号,定位关键函数。
动态调试验证:使用 Frida 执行Blutter生成的脚本或自定义脚本,Hook关键函数,监视参数和返回值,验证分析。
网络流量分析:按上述方法配置抓包环境,拦截和分析网络请求。
💡 分析与操作建议
从简单应用开始:先用开源Flutter应用练习整套流程。
注意版本兼容性:工具可能依赖特定的Flutter引擎或Dart版本。
结合使用效果更佳:用reFlutter快速抓包和Dump,用Blutter进行深入的静态分析。
利用好输出文件:Blutter生成的
pp.txt和objs.txt能帮你定位字符串、匿名函数等对象的具体内容。
Android开发智能调试分析软件V7.5
链接: https://pan.baidu.com/s/1cSibTh8nDMwsEvJ59Oblvg提取码: rx32
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...