Android 7 以后,Google 收紧了证书的权限,新增了证书验证,除非利用 ROOT 将证书移动到系统目录,大部分应用都不会信任用户添加的证书,否则会提示错误,拒绝链接。于是要想在 Android 上抓包,ROOT 是一个必须的条件,但是 ROOT 有门槛,于是自带 ROOT 和 Xposed 的 VMOS 手机虚拟机就是一个很好的选择。
本方法实际上是利用 VMOS 系统的低门槛 ROOT,迫使系统信赖 HttpCanary 的证书,然后 HttpCanary 再对 VMOS 进行抓包,便可以对 VMOS 内部的应用进行抓包。
这只是解决方法之一。像部分自带证书验证的应用此方法不奏效。
VMOS (Virtual Machine Operating System),也称虚拟大师,在应用内提供了一个完整的定制化系统, ROOT 和 Xposed 支持是可选的,相对于实体机来说,用户搞机门槛低了很多。但是其本身发展到现在,有了会员制度,无会员上述功能不能完整体验,建议自己购买会员或者使用此和谐版(请百度下载),在我 Android 11 上能够正常使用。
安装好系统后,在此处的虚拟机设置打开 ROOT 即可。
HTTPCanary 没有适配 Android 11,无法直接用原版应用安装或者导出证书,这里用到的也是来自酷安的一个修改版,(请百度搜索下载)。跟随引导配置好后,进入设置-HttpCanary 根证书,导出 .0 结尾的证书,默认放在 sdcard/httpcanary/ 下,记住这个目录就好。
进入 VMOS 的系统,可以通过自带的浏览器安装 RE 文件管理器或者导入 apk 文件,并用其自带的文件管理器导入上述导出的 .0 结尾的证书,然后进入 RE 文件管理器,把上述 .0 文件放入 /system/etc/security/cacerts/ 中,然后重启虚拟机即可。
在 HttpCanary 中左侧栏目标应用选项中添加 VMOS应用,再点击右下角的蓝色小飞机,打开 VPN 服务,就可以开始抓包了。并且也不会影响主机上其他应用的使用。
HttpCanary 中,每次请求可以点击右上角的小心心收藏请求相关数据,也可以分享生成 cURL 命令。