以下教程可能耗费你数小时时间,请注意时间。
目标:抓取HTTPS的包
如果你的手机是在Android 7.0+及其以上,想要抓取HTTPS的请求,必须要将证书(*.pem)用系统用户的权限安装,即把这个证书,要放到Android系统的加密与凭据->信任的CA证书。
以下这个是我们要完成的最终目标——把Charles的证书放到系统文件下。
前置工作:
1.准备一台已经有ROOT权限的小米手机。(具体步骤就是先去解锁,然后刷开发版的包,然后在安全中心中开启ROOT,开启USB调试)【重要】http://www.miui.com/unlock/index.html,按照步骤即可解锁。
2.电脑安装了Charles (https://www.charlesproxy.com/assets/release/4.5.6/charles-proxy-4.5.6-win64.msi
)。
然后,紧接着,把这个证书保存到桌面,命名为Charles.pem,我建议是放到和后面用到的安卓adb工具一个路径。
3.安装adb(platform-tools)。
打开https://developer.android.google.cn/studio/releases/platform-tools 下载平台工具,你是哪种操作系统就下哪个,我这里是Windows。然后在桌面解压
4.安装openssl以及配置环境变量
这里仅展示Windows。下载地址http://slproweb.com/products/Win32OpenSSL.html
选择64位。迅雷可以尝试这个地址: https://slproweb.com/download/Win64OpenSSL-1_1_1g.exe
安装完毕后。配置环境变量,将 openssl的bin目录放到Path环境变量,我的是这个路径 C:\Program Files\OpenSSL-Win64\bin
完成这些准备工作后,就和很多的教程一样了。
1.把前面桌面的那个证书charles.pem复制到桌面的文件夹内如图
2.紧接着, 使用快捷键将CMD控制台唤出(Shift + 鼠标右键)
3.此时,插入手机,并且确保USB调试已经打开。
4.在命令行中键入命令
adb devices
可以看到已经检测到手机
5.然后,依次执行下面命令,#后面是注释,关注adb开头即可。
# 以 root 权限执行
adb root
# 解决目录 read only 关键命令行
adb disable-verity
# 重启
adb reboot
# 以 root 权限运行
adb root
# 重新挂载
adb remount
# 设置读写
adb shell mount -o rw,remount /system
这个网上的一般教程,但是我在这块执行到最后一个命令adb shell mount -o rw,remount /system的时候出现的问题。
这里爆出了一个错。后来查阅后,其实在上一个重新挂载的命令就已经可以有写权限了,因为默认是只读权限。所以这个问题我们根本不用理会!
mount: '/system' not in /proc/mounts
6.权限完成后,要准备使用openssl命令了。这里确保前面的openssl的环境变量安装成功,要不然会告诉你openssl命令不存在。
#计算hash,后面会用到,红框中的字符串就是
openssl x509 -subject_hash_old -in charles.pem
7.修改这个charles.pem文件的名称为 hash值.0 。我这里的hash是bdb7xxx,那么原来的charles.pem文件就改为bdb7xxx.0。
如图
8.最后一步,.把凭据复制到系统凭据目录下
# 安装命令
adb push bdb7xxx.0 /system/etc/security/cacerts
以下如果提示你file pushed不用看。
出现什么权限不足,空间不足的可以看看。
这个地方,我遇到一个坑,就是提示空间不足,然后又提示权限不足。后来我发现我不能越级复制文件,结果我就先复制到了
/system目录下,然后一步一步复制到最终的那个目录下面。(⊙o⊙)
# 安装命令
adb push bdb7xxx.0 /system
#进入shell
adb shell
# 进入system目录
cd /system
# 剪切文件到里面的etc目录
mv bdb7xxx.0 etc
# 进入etc目录,以下类推
cd etc
mv bdb7xxx.0 security
cd security
mv bdb7xxx.0 cacerts
9.最后再进入到具体文件夹中看一下
adb shell
cd /system/etc/security/cacerts
ls -al
完成。最后在回到第一步进入,设置->密码隐私与安全->系统安全->加密与凭据-》信任的凭据,系统栏就可以看到了。
参考:
https://segmentfault.com/a/1190000011573699