前言
- 目前很多App采用了SSL Pinning技术,App只信任系统证书,不信任你安装的证书,因此通过简单的手机安装证书+电脑代理的方式无法抓取数据
- 主要有两种解决办法
- 反编译安装包,修改关于SSL Pinning的代码,重新打包
- 将抓包软件的证书伪装成系统证书,安装到手机根目录(需要手机已root)
- 本文采用第二种办法,用Charles抓包,用夜神模拟器作为root手机,用OpenSSL将证书伪造成系统证书
配置Charles
- 点击Help>SSL Proxying>Install Charles Root Certificate
- 点击安装证书,注意一定要选择受信任的根证书颁发机构
- 开启SSL Proxying,点击>Proxy>SSL Proxying Settings..,添加Include,这样就能代理所有Https请求
- 此时应该可以正常抓取本机的http和https的包
编译证书
- 首先安装好OpenSSL
- 点击Help>SSL Proxying>Save Charles Root Certificate,导出pem证书
- 输入命令
openssl x509 -subject_hash_old -in {pem证书}
第一行输出为3b78ca34
,将导出的pem证书名称修改为3b78ca34.0
配置夜神模拟器
- 打开夜神模拟器自带的Amaze,拖入改名后的证书,剪切
- 将证书粘贴到
/system/etc/security/cacerts/
目录下
- 点击三个点>属性>权限,修改为如下图
- 打开WLAN设置,长按
WiredSSID
,选择高级选项
- 展开高级选项,将代理设置为手动,
代理服务器主机名
为电脑的内网IP,代理服务器端口
为Charles的代理端口(Proxy>Proxy Settings...),保存
完成
此时打开网页,Charles会弹出提示框,点击同意,即可对App抓包