如何无需用户证书或修改应用在安卓模拟器中使用Burp抓包?
高版本Android模拟器配置Burp流量拦截的免修改Manifest方案
Android 7.0及以上版本系统默认不信任用户自行安装的CA证书,传统反编译修改Manifest配置网络安全规则的方法重打包、签名流程繁琐,以下几个方案操作成本更低:
- 方案一:Root权限写入系统证书(一劳永逸,适配绝大多数应用)
不需要针对单个应用做修改,操作完成后所有系统内应用默认信任Burp证书:- 从Burp导出DER格式的CA证书,本地用OpenSSL转成系统证书要求的格式:系统证书目录为
/system/etc/security/cacerts/,证书文件需命名为「证书subject_hash_old值.0」,转换命令如下:
执行完第二条命令会输出一串hash值,比如openssl x509 -inform DER -in cacert.der -out cacert.pem openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -19a5ba575,把转换好的cacert.pem重命名为9a5ba575.0即可。 - 启动支持Root的模拟器(官方AVD选择Google APIs镜像而非Google Play镜像,第三方模拟器如雷电、夜神可直接在设置中开启Root),执行adb命令重挂载系统分区为可写:
adb root adb remount - 推送重命名后的证书到系统证书目录,配置正确权限后重启模拟器:
adb push 9a5ba575.0 /system/etc/security/cacerts/ adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0 adb reboot
- 从Burp导出DER格式的CA证书,本地用OpenSSL转成系统证书要求的格式:系统证书目录为
- 方案二:VPN类抓包工具中转(无需Root,操作最快)
不想折腾Root的话,直接在模拟器内安装基于VPN服务实现的抓包应用,按照应用引导完成其自带根证书的安装后,将抓包应用的上游代理设置为Burp的监听地址和端口,即可通过VPN中转把所有流量转发到Burp,全程不需要修改目标应用的任何文件。该方案对部分做了VPN检测、代理检测的应用会失效,适配普通无特殊防护的应用效率很高 - 方案三:Magisk模块自动托管证书(适合已刷Magisk的环境)
如果模拟器已经刷入Magisk,直接刷入用户证书信任模块,重启后模块会自动把所有用户安装的证书同步到系统信任列表,后续更换Burp证书只需要正常在用户侧安装,重启设备就会自动生效,不需要手动执行adb命令操作系统分区。
注意:以上方案仅解决高版本系统默认不信任用户证书的问题,如果目标应用开启了SSL Pinning(证书固定),仍需要配合Frida等工具绕过证书校验,这部分逻辑和是否修改应用Manifest无关。
内容的提问来源于stack exchange,提问作者Doug
相关产品推荐
相关产品推荐

