前言
本文对Android8系统抓包app的相关数据包为例.
配置Charles
去官网下载Charles
https://www.charlesproxy.com/
启动后配置
首先设置代理
菜单栏上选择“Proxy”->“Proxy Settings”
设置抓取所以端口的包
Proxy -> SSL Proxying Settings -> SSL Proxying -> Enable SSL Proxying
电脑上证书安装
手机上配置
先wifi设置代理
确保手机与电脑在同一网络下能ping通,使用ipconfig查看自己电脑的ip
在手机打开wifi设置,设置wifi代理为手动
主机名写我们pc的ip,端口写前面配置的端口
手机、Charles匹配成功后,Charles工具显示弹窗,询问是否允许,点击Allow按钮
此时就能进行http的抓包了
手机上安装证书
手机打开浏览器输入网址:chls.pro/ssl
进入后会自动弹出下载,点击下载后的证书进行安装。这里手机不一样会有一些出入,不过基本都是让你设置一个密码后安装证书
安装成功后你可以在手机的“信任的凭据”的“用户”中看到前面安装的证书
到这里就可以进行https的抓包了。但app的包不能抓取。
Android 7.0之后https的ssl pinning
对于Android 7.0 (API 24) 之后,做了些改动,使得系统安全性增加了,导致:
APP 默认不信任用户域的证书
-》之前把Charles的ssl证书,安装到 受信任的凭据 -> 用户 就没用了,因为不受信任了
只信任(安装到)系统域的证书
导致无法抓包https,抓出来的https的请求,都是加了密的,无法看到原文了。app甚至会无网络。
解决方案就是将证书放到受系统信任的系统证书中去(手机需root)
这里需要使用OpenSSL计算出证书在系统证书目录的名称,修改证书名称后放入到/system/etc/security/cacerts/(具体操作下面的链接已经给出)
注意操作system需要重新挂载
mount -o rw,remount /
//操作完成后恢复
mount -o ro,remount /
上面引用 adb重新安装失败-挂载:“系统”不在/ proc / mounts中
Move Certificates
我们就不用这么麻烦去计算移动了,Magisk已经提供了一个模块将我们的用户证书放入到系统证书,这个模块就是Move Certificates。
下载该模块需要科学上网升级Magisk版本
安装后重启,就可以成功抓取到App的包了