Files
MemRelay/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/Frida 拦截 Flutter 流量的进展与卡点.md
T
memrelay cede49eee2 create: Frida 拦截 Flutter 流量的进展与卡点
MemRelay-Operation: memory-save:rapdrama-exp-frida-progress-20260925-0420
MemRelay-Resource: 3857b23e-1823-4ee9-a368-ec9161d4fd72
2026-09-25 04:34:21 +08:00

40 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Frida 拦截 Flutter 流量的进展与卡点
type: experience
permalink: main/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/frida-拦截-flutter-流量的进展与卡点
stable_id: 3857b23e-1823-4ee9-a368-ec9161d4fd72
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-frida-progress-20260925-0420
created_at: '2026-09-24T20:34:18.651753+00:00'
updated_at: '2026-09-24T20:34:18.651753+00:00'
tags:
- frida
- flutter
- 抓包
- dart
---
## 当前进展
已安装 Frida 17.18 + frida-server 17.17.0(x86_64)。SSL verify hook(偏移 0x8113ee)能成功安装并触发。视频流(ExoPlayer / Java 层)通过系统代理进 Charles 并被解密。
## 卡点
Dart 的 HttpClient 不走 Android 系统代理(findProxy 默认是 null = 直连)。API 请求直连 apis.raptdrama.com / app.raptdrama.com,不经过 Charles。
用 iptables DNAT 把 TCP 443 转到 Charles 时,Charles 的透明代理无法正确建立到原始目标的回连(因为 DNAT 丢失了原始目标地址信息,Charles 收到的连接目标是自己),导致连接失败或 TLS 从未发起。SSL bypass hook 不会被触发因为根本没到 TLS 握手阶段。
Frida hook libc connect 时发现:App 启动后 30 秒内没有一次 libc connect() 被调用。netstat 确认 Dart 进程有到 10.0.2.2:8888 的 tcp6 连接(使用 AF_INET6 + IPv4-mapped 地址),说明系统代理确实被 Dart 读到了(只是 API 请求没走它)。需要进一步确认 Dart 到底怎么建立到 apis.raptdrama.com 的直连。
## 未尝试的方案
1. **reFlutter 重打包**:patch libflutter.so 内置代理地址和禁用 SSL 验证,重签后安装。缺点是签名变化可能影响谷歌登录,且每次 App 更新要重做。
2. **mitmproxy 透明代理**:mitmproxy 的透明模式可以从 DNAT 的 SO_ORIGINAL_DST 获取原始目标地址,Charles 不行。
3. **Frida 直接 hook Dart 的 HTTP 层**:在 libapp.so 里找到 dio/http_client 的请求/响应处理函数,直接拦截 JSON 而不走代理解密。
4. **ProxyDroid / tun2socks**:在模拟器里装 VPN app 把所有流量导到代理,比 iptables DNAT 更完整。
5. **HTTP Toolkit**:专门处理 Android 透明代理,内置 DNAT 支持。