Mac 使用Android Studio 模拟器抓https

最近在测试 apk 时发现使用常规的手段：导出 burp 证书 -> 安装证书 ->wifi 设置代理的手段无法抓到 https 的流量（用 proxifier，让安卓模拟器走 burp 代理也是可以的，但是不想搞），通过搜索引擎得知 Android7.0 及之后，系统默认只信任系统证书，不再信任用户自己安装的证书，于是在多次尝试使用各类模拟器抓 apk 中 https 的报文失败后，还是选择了 Android Studio。将证书安装到系统证书中

准备 burp 证书

1、导出 burp 证书
2、使用 openssl 更改证书格式，先将 burp 证书的 der 格式转成 pem, 再获取证书的 hash

Copy
openssl x509 -inform DER -in burp.der -out burp.pem
openssl x509 -inform PEM -subject_hash_old -in burp.pem

将文件名修改为获取到的 hash.0

Copy
mv burp.pem 9a5ba575.0

准备模拟器

1、打开 Andriod Studio，新建一个模拟器，详情见图。

系统镜像可以按需选择

填入模拟器的名字，设置模拟器的存储大小，给多点，免得安装空间不够用。

2、使用 emulator 命令启动模拟器，命令的默认位置在 / Users/{{用户名}}/Library/Android/sdk/emulator, 添加 - no-snapshot-load 参数保存模拟器状态，否则重启模拟器之后需要重新执行 adb root、remount 命令然后修改证书权限。

Copy
查看所有模拟器 emulator -list-avds
然后启动模拟器 emulator @Resizable_API_33 -writable-system -no-snapshot-load

上传证书

1、使用 adb 命令重新挂载分区，使 system 可读写

Copy
adb root 进入root权限
adb disable-verity 关闭分区检测功能
adb reboot 重启设备
adb remount 重新挂载分区，使system分区可读可写

2、上传证书

Copy
adb push 9a5ba575.0 /sdcard 上传证书至/sdcard目录
adb shell 进入系统，此时可以使用whoami查看是否为root用户
cp /sdcard/9a5ba575.0 /system/etc/security/cacerts/ 进入系统后将证书复制到系统证书目录下
chmod 644 /system/etc/security/cacerts/9a5ba575.0 修改证书权限

3、查看证书是否安装成功
操作模拟器界面，进入设置 (setting) --> 安全 (security) --> 更多安全设置 (more security settings) --> 加密与凭据 (encryption & credentials) --> 信任的凭据 (trusted credentials)

配置 WIFI 代理

成功抓包

参考文章