Android 7+ 系统 Https 抓包 unknow 问题解决

在 Android 7.0 以上的手机,使用 Charles 抓包的时候,https 经常出现 unknow 问题
Android 7+ 系统 Https 抓包 unknow 问题解决_第1张图片
然后你可能会去设置证书,按照网上的教程设置完后,可能还是不能抓包,或者 https 的可以,但不能彻底解决。原因是,系统做了限制,各个应用不会使用用户设置的证书。
解决方法
1、使用修改 App 代码的方式,(没试过,但是不大现实,因为我想抓大多是没有源码的包,所以也无法修改)
2、刷机到 6.0 或者以下的包,这个应该可行
3、使用开发版的系统包,然后开通 root 权限,将 Charles 的证书放到系统的证书的目录下
重点说下第三种,个人觉得比较简单些

步骤一,刷开发版,使用小米 6X 手机为例

设置里找到我的设备,进入这个界面
Android 7+ 系统 Https 抓包 unknow 问题解决_第2张图片Android 7+ 系统 Https 抓包 unknow 问题解决_第3张图片
点击上面这个 MIUI 的图标,再点击右上角,就会出现“手动选择安装包选项”,选择自己下载好的开发版(小米社区可以下载)然后等待安装完成。

步骤二,获取 root 权限

使用官方工具可以 获取 root,具体参考小米社区这里
成功之后可以打开 root 了
Android 7+ 系统 Https 抓包 unknow 问题解决_第4张图片

步骤三,将 Charles 证书复制系统证书目下

这里可以导出 Charles 的证书(.pem)0
Android 7+ 系统 Https 抓包 unknow 问题解决_第5张图片
使用 adb 命令,生成证书名称,因为系统证书有命名规范。获取文件的 Hash 值

openssl x509 -inform PEM -subject_hash_old -in /c/Users/DELL/Desktop/moke.pem | head -1

在这里插入图片描述
最终命名为 e7e846eb.0
然后使用 adb rootadb remount,取得修改系统目录的权限
在这里插入图片描述
将证书复制到系统证书目录 /system/etc/security/cacerts/
在这里插入图片描述
但是我这边出现错误,使用 ES 文件浏览器手动复制过去也不行。最终使用:

adb disable-verity

在这里插入图片描述
原因是android P版本后google启用avb(Android Verified Boot)2.0,verified boot and DM-verity默认启用策略发生了变化.(说白的就是坑)

然后重新 重启手机,在使用 adb root adb remount

然后再
adb push C:\Users\DELL\Desktop\e7e846eb.0 /system/etc/security/cacerts/
在这里插入图片描述
好了,终于好了,去手机的信任的系统证书去看看
Android 7+ 系统 Https 抓包 unknow 问题解决_第6张图片
嗯 有我电脑的名字梦奇
试着抓包一下 ,MMP,还是不行。算了,好晚了,回去休息下。
第二天重启手机,再试一次
Android 7+ 系统 Https 抓包 unknow 问题解决_第7张图片
欧克,搞定,继续搬砖。

你可能感兴趣的:(填坑记录)