原因

APP 内建代理或者禁止使用系统代理,各种分析网上一大堆就不复制粘贴了

解决方案

如果不需要重放等功能直接使用 HttpCanary ,傻瓜式一键操作,本文结束

下面说正经的,这里默认手机已经 root,先将 Burp 的根证书放在系统证书里,然后安装 SSLUnpinning APP,当然也可以使用 Frida 的 SSLUnpinning ,相关的脚本自行去 Gayhub 淘

如果只抓 http 包, app 也没有 ssl pinning 则不需要前两步,可以直接跳到第三步

1. 导入 CA

导出 Burp 根证书,然后用 openssl 将证书转换为安卓认识的 .0 文件,下面命令用 Linux 执行

openssl x509 -inform DER -in cacert.der -out cacert.pem
mv cacert.pem `openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1`.0

如果导出的是 Burp 的证书,操作正确文件名一定为 9a5ba575.0

如果不懂 Magisk 包的制作也不想了解怎么制作直接将这个文件扔进 /system/etc/security/cacerts 然后权限改为 600,最后重启就行了

如果想用 Magisk 加载就用我提供的 copy_burp_ca.zip,替换压缩包里的 /system/etc/security/cacerts/9a5ba575.0 为你自己的文件,然后用 Magisk 刷入

2. 加载 SSLUnpinning

Xposed 使用 LSPosed,LSPosed 装好后加载 TrustMeAlready ,然后选中需要抓包的 APP,重启 APP 就开启了 SSLUnpinning

3. 开启安卓端 VPN

我是用的是 v2ray 的分支 xray,APP 用的是 v2rayNG

v2ray, xray 两者都支持 http/socks5 出站入站,但是相应的 Android app 没有 http 出站简易配置,只能自己手写配置然后导入到手机,为了简化操作我就在电脑上将 Burp 的 http 代理转换成 socks5 然后手机直接用 socks5 进行连接,需要注意的是各个版本能不一定正常工作,毕竟该程序的本职工作是 fxxk gfw ,而不是将 http 转成 socks5 代理,我测试了使用 v2ray 4.25.0 或 xray 1.2.2/1.2.3/1.5.5 能正常抓包

下载我提供的 burp.json 文件,使用命令 xray --config burp.json 可将 Burp 默认的代理端口 http://127.0.0.1:8080 转发到 socks5://0.0.0.0:8089,安卓端直接使用 socks5 协议连接局域网电脑 IP:8089 端口就可将流量代理到 Burp,当然作为一个合格的 fxxk gfw app 少不了指定 APP 才走代理,更多功能自行研究

总结就是安卓端使用 VPN 的方式将流量代理至 PC 端 Burp,不限于使用 v2rayNG 等安卓端支持 VPN 的代理 APP

下载链接:
copy_burp_ca.zip
burp.json



本作品采用 知识共享署名 - 相同方式共享 4.0 国际许可协议 进行许可。
 知识共享许可协议