android 9 以上版本,app 不再信任用户安装的证书,只能通过 root 手机把证书移动到 system 分区才能实现抓包。一般日常使用手机为了安全是不可能 root 的,这里通过 Windows 的 WSA 来实现抓包。
准备环境
到 WSABuilds 下载安装已 root 带 magisk 的 WSA 镜像(假如之前已安装过 WSA,需要先到系统应用列表中,把旧的卸载)
安装后,开始菜单中搜索
android
,找到 WSA 设置应用并打开,选择开发人员
,并打开开发人员模式
安装 APK 安装程序,实现双击安装 apk 和自动安装 adb 命令工具
安装 WSA 工具箱,用于上传文件到 WSA
下载 Magisk app,并安装
下载 Reqable 抓包工具,并安装
安装 Reqable 证书到 system 分区
打开 Reqable,选择菜单
证书 -> 安装根证书到 Android 设备 -> Magisk 模块
,并下载 Magisk 模块reqable-magisk.zip
打开WSA 工具箱,使用
文件传输
功能把刚刚保存的证书上传到 wsa 的Download
目录下载 Magisk 的MagiskTrustUserCerts模块压缩包,并通过WSA 工具箱上传到
Download
目录
- 打开 Magisk app,点击
模块 -> 从本地安装
,选择刚刚上传的Download
目录下的reqable-magisk.zip
和AlwaysTrustUserCerts
压缩包
安装成功后,正常会提示你重启 wsa,没的话,在命令行中执行
adb reboot
手工重启下重启后,点击WSA 工具箱首页的
Android设置
,正常能在安全->更多安全设置->加密与凭据->信任的凭据->系统
中,看到reqable
证书
WSA 工具箱假如连接不上,可以在命令行中使用
adb connect 127.0.0.1:58526
命令重启adb server
配置代理抓包
打开 Reqable,启动抓包
打开命令行,执行下面的命令设置 WSA 代理:
adb connect 127.0.0.1:58526
adb shell settings put global http_proxy 192.168.x.x:9000
其中192.168.x.x
需改为Reqable所在的 ip 地址
- 下载安装需要抓包的 app,访问就能在Reqable看到 https 流量了:)
删除代理
去掉代理需执行下面命令:
adb shell settings delete global http_proxy
adb shell settings delete global global_http_proxy_host
adb shell settings delete global global_http_proxy_port
部分 app 抓不到包
- app 可能使用了 http3(quic) 协议
很多手机厂商的官方 app 都是使用 quic 协议,而现在抓包软件一般都不支持。可以使用 jadx 打开 apk 搜索 quic
,看能不能找到相关信息。
解决方法可以参考文章 APP逆向分析,使用 Frida
hook 修改 app ,强制降级为 https 协议。