diff --git a/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/Drony + Charles + Frida 拦截 Flutter API 流量方案.md b/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/Drony + Charles + Frida 拦截 Flutter API 流量方案.md new file mode 100644 index 0000000..8a7ba2c --- /dev/null +++ b/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/Drony + Charles + Frida 拦截 Flutter API 流量方案.md @@ -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 已生效 \ No newline at end of file