1. 环境准备:VMOS内的调试环境搭建
1.1 为什么先搭环境,而不是先装工具
很多人拿到这套组合的第一反应是“我电脑上已经有Fiddler和Burp了,直接开始抓不就行了”。真上手你会发现问题全在手机端:目标APP的通讯不走系统代理、证书校验直接拒绝中间人、客户端检测Root和虚拟机直接闪退,这三个问题任何一个都能让抓包计划泡汤。所以我建议所有第一次接触这套流程的朋友,把VMOS环境搭建当成整个项目的第一个里程碑,而不是临时补一步。
VMOS是一个安卓虚拟化方案,它不依赖系统级root,直接在应用层跑一个完整的安卓子系统。对我们的调试场景来说,它有两个特别值钱的特点:一是你可以随意替换ROM包,想要内置root、内置Xposed框架的版本都有现成的可用;二是虚拟机和宿主机共享WiFi网络,Fiddler和Burp只需要监听电脑本机端口,VMOS里的APP就能通过网络把流量送过来。相比用真机去折腾root和证书,这样可以把风险集中在虚拟环境里,宿主机完全不受影响。
1.2 VMOS版本、ROM包与基础设置
我在实操中推荐使用VMOS Pro版本,支持手动添加ROM包,自由度更高。激活方式上,如果手机本身已经root,可以直接授权;如果没有root,它会通过激活器等方式来运行,具体看版本说明。需要注意的是,不同手机型号对VMOS Pro的适配有差异,个别机型的虚拟化权限受限,运行起来会提示需手动开启“允许创建虚拟机”之类的开关,进系统设置里找一下VMOS的辅助权限就行。
ROM包的选择很关键。做抓包调试,优先选自带Root和Xposed的版本,省去自己刷的麻烦。我用的比较多的是一个安卓9的精简包,默认开启Root权限,内置了几款常用工具,包括终端模拟器和Xposed Installer,基本能满足调试需求。装上之后进设置,把分辨率、内存都调高一点,因为后续要同时跑Fiddler的证书安装、Xposed模块注入这些操作,内存太抠会频繁卡顿。
网络设置是另一个容易踩坑的点。VMOS默认的“NAT模式”对抓包是友好的,因为它是通过宿主机的网络出口访问外部,代理指到电脑IP就能跟上。但千万不要打开“Root权限下的全局透明代理”之类的选项,那会改变数据流路径,导致我们在电脑上监听不到请求。
1.3 把目标APP和调试工具放进同一个虚拟网络
完成基础配置后,你需要把两个重要的东西装到VMOS里:一个是目标APP,另一个是证书安装工具。目标APP直接从应用商店或者APK安装包拖进去即可。因为VMOS是独立的系统环境,宿主机和虚拟机的APP数据完全隔离,所以不必担心和其他已登录账号冲突。
证书部分,我一般直接在VMOS里用浏览器下载Fiddler的证书生成页面(http://你的电脑IP:8888),前提是VMOS系统里能访问到这个地址,这也就要求电脑端Fiddler必须先启动监听。下载后通过设置里的安全选项安装到“用户凭据”,很多旧版安卓ROM没有Android 7以上的用户证书隔离限制,装完就能解密HTTPS流量。如果你用的是Android 7+的精简包,还要多做一步:把用户证书转换成系统证书。
转换证书有个比较实用的方法:把下载来的cer证书通过OpenSSL转成PEM格式,再用openssl x509 -inform PEM -subject_hash_old -in yourcert.pem算出hash值,重命名成“[hash].0”然后放到系统证书目录/system/etc/security/cacerts。很多现成的教程会直接给一条命令搞定,但说实话在虚拟机里操作挂载读写,不如直接用支持系统证书安装的定制ROM包方便。如果你手头的ROM包不支持,就用下面这种方式试一遍,成功率很高。
bash复制# 先进入VMOS内部终端,或者通过adb连接
# 将证书文件从sdcard复制到临时目录
cp /sdcard/Download/FiddlerRoot.cer /data/local/tmp/cert.cer
# 计算证书的hash值
openssl x509 -inform PEM -subject_hash_old -in /data/local/tmp/cert.cer
# 假设输出为 3adf3456,则重命名证书
mv /data/local/tmp/cert.cer /data/local/tmp/3adf3456.0
# 挂载系统分区为可读写(需要root)
mount -o rw,remount /system
# 复制到系统证书目录
cp /data/local/tmp/3adf3456.0 /system/etc/security/cacerts/
# 修正权限
chmod 644 /system/etc/security/cacerts/3adf3456.0
# 重新挂载为只读
mount -o ro,remount /system
# 重启VMOS内的安卓系统,让证书生效
reboot
这套操作不是每次都要做,做一次能管很久。如果你发现证书明明装了,但Fiddler解密出来的还是“CONNECT隧道”,优先检查这一步骤有没有完成。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Fiddler抓包配置详解
2.1 监听端口与远程连接的启用
Fiddler作为这套链路的前端入口,它的任务是把来自VMOS的所有HTTP/HTTPS流量先接住,再决定是直接解密分析,还是把流量原样或者改写后转发给Burp。默认情况下,Fiddler只监听本机回环地址,也就是127.0.0.1:8888,这样宿主机自己的进程能走代理,但VMOS的流量过不来。所以第一步必须打开“允许远程计算机连接”。
具体操作路径:菜单栏Tools -> Options -> Connections,勾选“Allow remote computers to connect”。如果端口8888被占用,改成其他端口也行,但后面的VMOS代理设置、Burp上游转发配置都要同步改。端口我建议固定下来,最好写在一个笔记里,后面排查
