create: Drony + Charles + Frida 拦截 Flutter API 流量方案

MemRelay-Operation: memory-save:rapdrama-exp-drony-plan-20260925-0530
MemRelay-Resource: 55f17fe5-35ee-4f9c-91dc-e9162310beaf
This commit is contained in:
2026-09-25 05:32:43 +08:00
parent bc464fed47
commit 4fb256c5d5
@@ -0,0 +1,46 @@
---
title: Drony + Charles + Frida 拦截 Flutter API 流量方案
type: experience
permalink: main/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/drony-charles-frida-拦截-flutter-api-流量方案
stable_id: 55f17fe5-35ee-4f9c-91dc-e9162310beaf
scope: project
memory_type: experience
project_id: 280dd2a0-d23d-4a71-91e1-dce4353163be
usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998
status: active
revision: 1
request_id: rapdrama-exp-drony-plan-20260925-0530
created_at: '2026-09-24T21:32:40.788358+00:00'
updated_at: '2026-09-24T21:32:40.788358+00:00'
tags:
- drony
- flutter
- 抓包
- 方案
---
## 看雪文章确认的 Flutter 抓包方案
文章来源:https://bbs.kanxue.com/thread-275953-1.htm
核心方案:**Drony + Charles/Burp + Frida SSL bypass**
1. 安装 Drony(org.sandroproxy.drony 1.3.154,APK 约 9MB)到模拟器
2. 配置 Drony 的 WiFi 代理指向 Charles 的 IP 和端口(10.0.2.2:8888)
3. Drony 会创建 VPN tun 设备截获所有流量(包括 Dart 的直连请求),转发到指定代理
4. Frida hook libflutter.so 的 session_verify_cert_chain 返回 true 绕过 SSL 校验
5. Charles 收到 CONNECT 请求,用自己的 CA 解密,显示明文
为什么 Drony 能解决问题:
- Dart 的 HttpClient 不走 Android 系统代理,但 VPN tun 设备在网络层截获所有 IP 包,包括 Dart 直连的 TCP
- 不需要 iptables DNAT(之前因为 DNAT 丢失原始目标地址导致 Charles 透明代理失败)
- 不需要 hook libc connect(之前因为 MuMu x86_64 上 Frida 无法 hook bionic 短函数)
- 不需要 mitmproxy(之前 WinDivert 搞崩宿主机网络)
- 不需要重打包 APK
注意:
- Drony 配置的代理类型要选 HTTP,不是 SOCKS
- Charles 的 SSL Proxying 已开启全站解密(host=* port=*)
- Charles 不要开 Windows 系统代理(windowsConfiguration.enableAtStartup=false)
- Frida SSL bypass 的偏移是 0x8113ee(当前版本 libflutter.so,更新后可能变)
- 先启动 Frida hook,再启动 Drony,确保第一次 TLS 握手时 hook 已生效