Impact-I/reFlutter
GitHub: Impact-I/reFlutter
Flutter 应用逆向工程框架,通过替换修补后的 Flutter 引擎实现动态分析、流量拦截和代码 dump
Stars: 2490 | Forks: 274
[](https://github.com/Impact-I/reFlutter/stargazers)
该框架通过使用已编译且准备用于应用重打包的 Flutter 库修补版本,协助进行 Flutter 应用的逆向工程。该库修改了快照反序列化过程,以便您以便捷的方式进行动态分析。
主要功能:
- `socket.cc` 已被修补,用于流量监控和拦截;
- `dart.cc` 已被修改以打印类、函数和某些字段;
- 显示函数的绝对代码偏移量;
- 包含用于成功编译的细微调整;
- 如果您想实施自己的补丁,支持使用专门设计的 `Dockerfile` 手动修改 Flutter 代码。
### 支持的引擎
- Android: arm64, arm32;
- iOS: arm64;
- 版本:Stable, Beta
### 安装
```
# Linux, Windows, MacOS
pip3 install reflutter==0.8.6
```
### 用法
```
impact@f:~$ reflutter main.apk
Please enter your Burp Suite IP:
SnapshotHash: 8ee4ef7a67df9845fba331734198a953
The resulting apk file: ./release.RE.apk
Please sign the apk file
impact@f:~$ reflutter main.ipa
```
### 流量拦截
您需要指定位于与运行 Flutter 应用设备同一网络中的 Burp Suite 代理服务器的 IP。然后在 `BurpSuite -> Listener Proxy -> Options tab` 中配置代理:
- 添加端口:`8083`
- 绑定地址:`All interfaces`
- 请求处理:支持不可见代理 (Support invisible proxying) = `True`
shell "settings put global http_proxy "
```
对 APK 进行签名、对齐并安装。可选择配置 **TunProxy** 以通过 Burp Suite 路由流量。
#### 在 iOS 上
签名并安装 IPA。配置 **Potatso** 以使用您的 Burp Suite 代理服务器。
### 在 Android 上使用
生成的 apk 必须经过对齐和签名。推荐工具是 [uber-apk-signer](https://github.com/patrickfav/uber-apk-signer/releases/tag/v1.2.1):
```
java -jar uber-apk-signer.jar --allowResign -a release.RE.apk
```
在设备上运行应用。通过二分查找法确定 `_kDartIsolateSnapshotInstructions`。reFlutter 将 dump 文件写入应用的根文件夹并设置 777 权限。使用以下命令检索它:
```
adb -d shell "cat /data/data//dump.dart" > dump.dart
```
### 在 iOS 上使用
运行 `reflutter main.ipa` 后,在设备上执行应用。dump 文件路径会打印到 Xcode 控制台日志中:
```
Current working dir: /private/var/mobile/Containers/Data/Application//dump.dart
```
从设备中检索该文件。
-l frida.js
```
查找 `_kDartIsolateSnapshotInstructions`:
```
readelf -Ws libapp.so
```
查找 `Value` 字段。
### 待办事项
- [x] 显示函数的绝对代码偏移量;
- [ ] 提取更多字符串和字段;
- [x] 添加 socket 补丁;
- [ ] 使用 Fork 和 Github Actions 扩展对 Debug 引擎的支持;
- [ ] 改进 zip 存档内 `App.framework` 和 `libapp.so` 的检测
### 构建引擎
引擎使用 [GitHub Actions](https://github.com/Impact-I/reFlutter/actions) 基于 [enginehash.csv](https://github.com/Impact-I/reFlutter/blob/main/enginehash.csv) 中的数据构建。快照哈希检索自:
```
https://storage.googleapis.com/flutter_infra_release/flutter//android-arm64-release/linux-x64.zip
```
### 自定义构建
支持使用 Docker 手动修补 Flutter 代码:
```
git clone https://github.com/Impact-I/reFlutter && cd reFlutter
docker build -t reflutter -f Dockerfile .
```
运行命令:
```
docker run -it -v "$(pwd):/t" -e HASH_PATCH= -e COMMIT= reflutter
```
示例:
```
docker run -it -v "$(pwd):/t" -e HASH_PATCH=aa64af18e7d086041ac127cc4bc50c5e -e COMMIT=d44b5a94c976fbb65815374f61ab5392a220b084 reflutter
```
#### 示例:构建 Android ARM64 (Linux/Windows)
```
docker run -e WAIT=300 -e x64=0 -e arm=0 -e HASH_PATCH= -e COMMIT= --rm -iv${PWD}:/t reflutter
```
标志:
- `-e x64=0`:禁用 x64 构建
- `-e arm64=0`:禁用 arm64 构建
- `-e arm=0`:禁用 arm32 构建
- `-e WAIT=300`:构建前修改源代码的时间(秒)
- `-e HASH_PATCH`:来自 `enginehash.csv` 的快照哈希
- `-e COMMIT`:引擎提交哈希


文件内容
``` Library:'package:anyapp/navigation/DeepLinkImpl.dart' Class: Navigation extends Object { String* DeepUrl = anyapp://evil.com/ ; ... ```
发布
[](https://github.com/Impact-I/reFlutter/actions)标签:Android, App安全, Burp Suite, Docker, DSL, Flutter, iOS, PE 加载器, Python, SO库修补, 云安全监控, 云资产清单, 协议分析, 合规性检查, 威胁情报, 安全防御评估, 开发者工具, 快照反序列化, 无后门, 权限提升, 流量拦截, 白盒测试, 目录枚举, 移动安全, 网络安全, 请求拦截, 逆向工具, 逆向工程, 重打包, 隐私保护, 静态分析