安卓高版本抓包解决
Table of Contents
迁移charles到系统证书
-
安卓4.4之前手机信任用户证书,配置好代理在浏览器访问 chls.pro/ssl 安装charle证书即可。
最好使用第三方手机浏览器进行下载。有部分浏览器下载的.pem的不能安装,换个浏览器下载就行。正确的是.crt格式
-
安卓4.4之后手机不在信任用户证书
解决证书信任问题有两种办法。 在app里设置信任用户证书,这样的话需要重新打包。 或者把charles的证书设置为系统证书。
以下是第二种方式,不用涉及到重新打包
-
首先需要获取手机root 权限
-
同样先下载charles证书到手机,先安装到用户证书上。
用户证书安装路径 /data/misc/user/0/cacerts-added 系统证书安装路径 /system/etc/security/cacerts 其中的每个证书的命名规则如下: <Certificate_Hash>.<Number> 文件名是一个Hash值,而后缀是一个数字。 文件名可以用下面的命令计算出来: openssl x509 -subject_hash_old -in <Certificate_File> 后缀名的数字是为了防止文件名冲突的,比如如果两个证书算出的Hash值是一样的话, 那么一个证书的后缀名数字可以设置成0,而另一个证书的后缀名数字可以设置成1
-
先安装到用户证书的目的就是不用计算证明的命名Hash值
-
adb 命令进入到用户证书路径下,查看证书所属权限和所属组,不对则需要修改成root用户。
adb shell cd /data/misc/user/0/cacerts-added chmod 644 <xxxx>.0 chown root <xxxx>.0 chgrp root <xxxx>.0
-
然后要调整安卓system分区权限,不然移动证书到根证书会报错 只有可读权限#
# 查看system 权限 mount | grep /system # 查看system 路径 cat /proc/mounts # 一般为 /dev/xxxx/xxxx /system # ro表示只读,rw表示读写 mount -o rw,remount /dev/xxxx/xxxx /system
system目录权限调整后,误删文件系统会崩溃。 最好改回去…
-
然后移动用户证书目录到系统证书就可以了。
mv <xxxx>.0 /system/etc/security/cacerts/
-
重启手机或者模拟器
adb reboot # 或者手动重启
-
然后就可以愉快的抓包了
-