Files
MemRelay/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/如何设置 MuMu 模拟器并安装抓包证书.md
T
memrelay b801a6452a create: 如何修改 Charles 以解密模拟器 HTTPS
MemRelay-Operation: memory-save:rapdrama-exp-charles-20260925-0346
MemRelay-Resource: 120e75c2-feea-450c-b525-5623768b318f
2026-09-25 03:48:56 +08:00

46 lines
2.6 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: 如何设置 MuMu 模拟器并安装抓包证书
type: experience
permalink: main/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/如何设置-mu-mu-模拟器并安装抓包证书
stable_id: 1a3372d5-c353-4c40-a2e0-e79ac8d095d2
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-mumu-20260925-0346
created_at: '2026-09-24T19:48:53.170005+00:00'
updated_at: '2026-09-24T19:48:53.170005+00:00'
tags:
- mumu
- adb
- 证书
- flutter
---
MuMu 设置中心 → 开发者选项:Root 开启,ADB 调试选「开启本地连接」,磁盘共享改成可写系统盘后重启。只读系统盘时 /system 不能写证书。可写生效后,/system 是 ext4 rw。谷歌套件用模拟器里的谷歌安装器按顺序安装。机型不要用红米、华为、荣耀,否则 Play 商店容易报设备未经过 Play 保护机制认证。连上 ADB 时读到的机型是 Redmi 23113RKC6C。
连接:
& "D:\Program Files\Netease\MuMu Player 12\shell\adb.exe" connect 127.0.0.1:16416
若提示 offline 或版本不匹配,用同一个 adb 执行 kill-server 后再 connect。模拟器重启后要重新 connect。adb root 可以把 adbd 提到 root;重启后会回到 shell,写系统区前要再执行一次。
安装系统证书(哈希文件名随证书变,当前是 275d036d.0):
adb root
adb push 275d036d.0 /system/etc/security/cacerts/275d036d.0
adb shell chmod 644 /system/etc/security/cacerts/275d036d.0
adb shell chcon u:object_r:system_file:s0 /system/etc/security/cacerts/275d036d.0
adb reboot
重启后确认证书文件还在。只推送不重启,已经跑起来的进程不会信任新证书。
代理:
adb shell settings put global http_proxy 10.0.2.2:8888
这个全局代理会跨重启保留。从模拟器用 nc 把 HTTP 请求发到 10.0.2.2:8888,example.com 返回了 200,说明路径是通的。
坑:这台 MuMu 的 iptables 没有 owner 匹配,不能按 App uid 单独转发。曾把整台模拟器的 TCP 80/443 DNAT 到 10.0.2.2:8888,并丢弃 UDP 443。RaptDrama 随即报 Network connection failed。原因是 Flutter 的 dart:io 不走安卓系统代理,也不使用系统证书库,强制转发后 TLS 校验失败。这些 iptables 规则已经删除(nat OUTPUT 已清空,UDP 443 DROP 已去掉),重新打开 App 后账号接口恢复返回数据。没有让 Dart 信任 Charles 证书之前,不要再做这种全局转发。模拟器重启会清掉未持久化的 iptables,但不会清掉全局 http_proxy 和已写入系统区的证书。