在gpt的帮助下安装chales的证书,用于https在root情况下抓包

Charles证书安装到系统证书区步骤(适合红米Note8Pro)

1. 先导出 Charles 的证书(.pem 格式)

  1. 打开 Charles → 菜单 HelpSSL ProxyingSave Charles Root Certificate

  2. 保存出来的文件是 .crt 格式,比如 charles-ssl-proxying-certificate.crt

  3. .crt 文件改后缀.pem(如果 Charles 没直接保存成 pem)

    • 有些版本直接是 .pem,如果不是,自己改成 .pem,或者用 openssl转。

2. 转换为系统格式(必须是 DER编码

Android 的系统证书要求是 .0文件,格式有要求。

打开终端(电脑上有 openssl)执行:

bash 复制代码
# 先转换成 der 格式
openssl x509 -inform PEM -outform DER -in charles-ssl-proxying-certificate.pem -out charles.der

# 然后计算哈希(重要!)
openssl x509 -inform DER -subject_hash_old -in charles.der | head -1

例如,输出是:

复制代码
9a5ba575

这一步得到哈希值,比如这里是 9a5ba575

然后执行:

bash 复制代码
# 把 der 格式的证书重命名为 哈希值.0
mv charles.der 9a5ba575.0

这样,你就得到了一个叫 9a5ba575.0 的文件。

如果报错问一下ChatGpt报错的原因 比如我就是

lua 复制代码
PS C:\Users\Admin\Desktop> openssl x509 -inform DER -subject_hash_old -in charles.der unknown option -subject_hash_old usage: x509 args -inform arg - input format - default PEM (one of DER, NET or PEM) -outform arg - output format - default PEM (one of DER, NET or PEM) -keyform arg - private key format - default PEM -CAform arg - CA format - default PEM -CAkeyform arg - CA key format - default PEM

**你的 openssl 版本太新了,不支持 -subject_hash_old 参数 从 OpenSSL 3.x 开始(比如 OpenSSL 3.0/3.1),
-subject_hash_old 被移除了,只保留了 -subject_hash
但是 Android 系统(尤其是 Android 7/8/9)要求用的是 "old hash",否则证书名字对不上。

你的当前操作建议

执行这条:

复制代码
openssl x509 -inform DER -subject_hash -in charles.der

拿到输出的哈希值,比如:

复制代码
a1b2c3d4

然后把 charles.der 改名成:

复制代码
a1b2c3d4.0

继续 push 到 /system/etc/security/cacerts/

安卓11要安装到系统目录 修改 /system 权限

手动 remount /system 分区

理论上可以 adb shell 下试:

bash 复制代码
adb shell
su
mount -o rw,remount /system

报错:PS E:\Goolge Download> adb shell begonia:/ $ su begonia:/ # mount -o rw,remount /system mount: '/system' not in /proc/mounts

ChatGPT 说:

好,很标准的错误提示:

bash 复制代码
mount: '/system' not in /proc/mounts

意思是:

你的系统根本就没有把 /system 单独挂载出来,它其实是挂载在 / (根目录)下面的。

这就是 Android 10/11 开始使用的 system-as-root 架构。

简单讲:

  • /system 不是一个独立挂载点了。
  • 真正挂载的是整个 / 根目录(/ 包括了 /system 这些子目录)。
  • 所以你不能直接 mount -o rw,remount /system
  • 你要 remount 的其实是 根目录 /

正确一点的操作方式

你要改成 remount / 根目录:(这里一次不行就多操作几次,我都是第二次输入命令行才行的!!!!

复制代码
mount -o rw,remount /

是的,你这一步已经成功 remount 根目录 / 为可写(rw)了!

注意看:

  • 第一次 mount -o rw,remount /system 报错 ❌(正常)
  • 然后你改成 mount -o rw,remount /
  • 没有任何错误提示
  • 直接回到了命令行,这就代表:成功了

🔥 现在你的系统是【临时可写】状态了!

什么意思?

  • 现在 你可以操作 /system 下的文件,比如复制 Charles 证书。
  • 但是重启手机后会失效,因为这个挂载是临时的(系统开机会重新挂成只读)。

所以:抓紧时间干你要干的事情,比如:


🔥 接下来干什么?( Charles证书安装流程 )

比如你要把 Charles 证书安装到系统证书,就这样做:

  1. 把 Charles 导出的证书文件(一般叫 charles.pem.crt)转成正确格式。
  2. 生成对应的哈希名,比如 9a5ba575.0 这样的名字。
  3. 把文件推送到 /system/etc/security/cacerts/ 目录。
  4. 修改证书文件权限,设成 644(-rw-r--r--)。
  5. 重启手机(让系统信任证书)。

adb推送证书到手机 /system

执行:

bash 复制代码
adb push 9a5ba575.0 /sdcard/
adb shell
su
cp /sdcard/9a5ba575.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/9a5ba575.0

3. 最后,重启手机(我没有重启手机也可以了,所以因人而异吧)

执行:

复制代码
reboot

或者手动重启。

重启后,系统就会信任 Charles 的证书,抓 HTTPS 流量就不会出现 "SSL Pinning" 错误了!

相关推荐
韩仔搭建6 小时前
第二章:安卓端启动流程详解与疑难杂症调试手册
android·ui·娱乐
A-花开堪折6 小时前
Android7 Input(七)App与input系统服务建立连接
android
冰糖葫芦三剑客6 小时前
Android 自定义悬浮拖动吸附按钮
android
吃汉堡吃到饱7 小时前
【Android】从Choreographer到UI渲染(二)
android·ui
微信公众号:AI创造财富7 小时前
显示的图标跟UI界面对应不上。
android·ui
aningxiaoxixi7 小时前
安卓 Audio Stream 类型
android
奔跑吧 android7 小时前
【android bluetooth 协议分析 01】【HCI 层介绍 3】【NUMBER_OF_COMPLETED_PACKETS 事件介绍】
android·bluetooth·hci·bt·gd·aosp13
_龙小鱼_10 小时前
Kotlin扩展简化Android动画开发
android·开发语言·kotlin
奔跑吧 android10 小时前
【android bluetooth 协议分析 01】【HCI 层介绍 6】【WriteLeHostSupport命令介绍】
android·bluetooth·bt·gd·aosp13·writelehostsup·hcicmd
uwvwko10 小时前
ctfshow——web入门254~258
android·前端·web·ctf·反序列化