抓取 Flutter 流量
🐦 Flutter App 的 HTTP 流量,r0capture 的特殊挑战。
Flutter 的难点
Flutter 用 Dart 语言,HTTP 走 Dart 自带的 dart:io HttpClient,底层是 Dart VM 编译的 SSL 实现(BoringSSL 静态链接进 libflutter.so),不走 Android 系统 SSL 栈。
| 维度 | 普通 App | Flutter App |
|---|---|---|
| SSL 栈 | 系统 Conscrypt | Dart 自带 BoringSSL |
| SSL_read/write 在哪 | libssl.so | libflutter.so 内部 |
| r0capture 默认 hook | ✅ | ❌ 抓不到 |
抓取方法
方法1:定位 Flutter 的 SSL 函数
Flutter 把 BoringSSL 静态链接,SSL_read 不是导出符号,需在 libflutter.so 内部找:
bash
# 用 r0capture 的 -ssllib 指定
r0capture -ssllib /data/app/.../libflutter.so -p -flutter.pcap com.example.app但 Flutter 的 SSL 函数常被 strip 符号,需按特征码或偏移定位。
方法2:proxy 走系统代理
部分 Flutter 版本支持 --enable-vm-service 或环境变量强制走代理。
方法3:降级到 Java socket
少数 Flutter 混合 App 部分流量走原生,可抓到。
常见失败
Flutter 是 r0capture 的已知难点。详见 flutter-fail FAQ。