# Android 7.0 后更新安全策略,软件可以自身选择是否相信用户导入的证书。所以当我们在手机导入 charles 的证书后,有些软件依旧抓不到 Https 的包。我们需要把证书导入到手机系统里面而非用户里面。

上图是我的 pixel 3xl (安卓 9.0) 导入成功之后的截图。亲测可以抓到 https 的包。

这里提供四种方案处理证书:

  1. # 正常安装证书,然后把证书移到根目录

    • adb 命令移动

      $ adb shell #连接手机进入 shell 模式
      su 	# 进入 root
      cd /data/misc/user/0/cacerts-added 	# 切换到用户证书目录
      mount -o remount,rw /system  # 将 system 权限改成可读写,不然不行 (magisk root 会有 system 不能 mount 的状况,需要刷 twrp 解决)
      mv * /etc/security/cacerts/ # move 证书到系统证书目录
      mount -o remount,ro /system # 权限改回只读
    • 使用 MT管理器 或者 RE管理器 移动.

  2. # 通过 openssl 生成系统可识别的证书,导入根目录。

    • 首先准备 openssl 命令行工具,手机需要 root ,证书导出到桌面

      官网的 openssl 需要配置很多东西,这里我们可以下载其他人做的便捷版安装包 http://slproweb.com/products/Win32OpenSSL.html, 下载对应版本安装好 ,然后配置一下环境变量就可以了。

    • 将证书转为 pem 格式。 charles 可以直接转为 pem 格式,fiddler 需要自己转:

      openssl x509 -in charles.cer -inform der -out charles.pem	# cer 转为 pem
    • 使用 openssl 查看 pem 证书的 hash 值:

      openssl x509 -inform PEM -subject_hash_old -in charles.pem

    • 获取一段类似 32d678a2 的字串,将文件名重命名为 32d678a2.0

    • 最后把 32d678a2.0 文件放到手机的 /system/etc/security/cacerts 目录下,重启手机即可。

    • 如果手机 root 了,确没有 system 挂载权限,可以先用 adb shell 把文件 push 到 /sdcard/Download 里,再用 MT管理器 或者 RE管理器 移动到指定目录。

      adb push 32d678a2.0 /sdcard/Download

      注意:有时候证书导入到根目录依然抓不到包,用下面指令再获取一个 hash 值,跟之前一样重命名导入到根目录,两个文件一起放进去。

      openssl x509 -inform PEM -subject_hash -in charles.pem
  3. # 安装 Magisk ,然后从 magisk 里安装 Move Certificates 插件

    • 直接在 magisk 模块页面搜插件名就可以,高版本没有搜索功能,这里是插件地址:https://themagisk.com/move-certificates-magisk-module/

    • 然后导入 charles 证书,正常安装到用户目录,当你抓包的时候,插件会自动帮你把证书移到根目录使用,看插件指令就能看出来。

  4. # 使用框架,把 app 添加到框架内,然后用 JustTrustMe 模块。

    • 因为 Xposed 官方只支持到 8.0, 对于更高版本可能有不兼容的情况,比如安装太极框架,太极框架兼容 xpsoed 的模块

      m

    • 上图为太极框架界面,手机没 root,只能用太极阴,我这里是太极阳,没关系,这并不影响下面的操作。

    • 点击添加应用,把想要抓包的软件添加到框架里,太极阴需要加载一会并卸载软件重装,装完之后点击模块管理,

      把安装的 JustTrustMe 勾选上

  • 重新打开需要抓包的软件,就可以进行 https 抓包了

第④种办法应该就是 hook 了软件的证书验证,其实我们也可以使用 frida hook 证书验证,不过需要自己找到证书验证的 hook 点,还是直接找大佬造好的轮子用舒服。。。

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

渣渣文 微信支付

微信支付

渣渣文 支付宝

支付宝