之前就因为 pixel 3 因为用户安装的 https 证书不被认可,不能抓包费心费力,为了使手里的 pixel 3 可以正常抓包,花了两天时间来研究,现记录如下。
Charles - Help - SSL Proxying - save Charles root certificate
保存证书到本地,文件名大概为 charles-ssl-proxying-certificate.pem
, 然后 terminal 中
openssl x509 -inform PEM -subject_hash_old -in charles-ssl-proxying-certificate.pem | head -1 # aaaaaaaa
openssl x509 -inform PEM -subject_hash -in charles-ssl-proxying-certificate.pem | head -1 # bbbbbbbb
拿到的两个文件的名字 + '.0'
作为新的文件的名字。
openssl x509 -inform PEM -text -in charles-ssl-proxying-certificate.pem > aaaaaaaa.0
openssl x509 -inform PEM -text -in charles-ssl-proxying-certificate.pem > bbbbbbbb.0
-----BEGIN CERTIFICATE-----
到文件结束这部分移动到文件首部这部分虽然过程曲折,但最终还是用 magisk 搞定了 root,这里大概记录下过程。
Android
官方的 platform-tools
(Mac 的话则只需要执行 brew cask install android-platform-tools
)Magisk
(主要是 Magisk Manager
apk)OEM
和 BootLoader
, 可参考 这篇帖子一开始看到有 帖子 说用 twrp
来刷机,在 twrp
官网下载完 3.3.0
的 installer
之后来用 fastboot
刷,奈何萌新没有经验导致翻车,主要是在
fastboot boot twrp.img
这一步报错,原因显示为
usb_read failed with status e00002ed ERROR
查阅很多资料有说 USB 线不好用或者是 U 口有问题等等,经换线、换电脑、换操作系统的排查发现均不是以上问题。后怀疑应该是刷机包本身有问题或者版本不匹配造成。在一番手贱之后(比如把这个包 flash boot)终于机子变砖了。
boot.img
变砖之后查询了一些办法之后发现可以下载 官方底包 之后解压两层得到一个 boot.img
的镜像,这个就是用来刷 boot stock 的包。尝试一番,用 fastboot
刷进去
fastboot flash boot boot.img
开机,能进入系统。
boot.img
传到手机上自定义位置打开 Magisk Manager,下载最新版 Magisk(选择修复一个文件选项,然后选择 boot.img
)
注意如果一直检查更新的话则需要翻墙
magisk_patched.img
的镜像到 download
里,将它拉倒电脑上adb reboot-bootloader
fastboot flash boot magisk_patched.img
开机,终于不是黑屏了。然而更悲惨的是触控全部失灵 = = 在查询各种网站之后发现不仅我一个人有困惑,比如教程后的评论中同样有人遭遇此境况。然而 xda
等地方没有查到更多关于刷机导致触屏失灵的情况,所以判断还是需要从固件入手,我整个恢复原厂设置就好了吧(
由于不能够点击屏幕,在查阅一番之后发现用原厂固件包中的脚本就可以轻松恢复了:
# 先 cd 进入固件包
# Windows 直接点击 flash-all.bat MacOS / Linux
./flash-all.sh
同第 3 步,搞完之后就发现 root
成功了
在查阅 这个帖子 的时候发现往 /system
中写入东西的时候会报错
mv: /system/etc/security/cacerts/xxxxxxxx.0: Read-only file system
根据教程是需要挂载 /system
,使用
mount -o rw,remount /
# OR
mount -o rw,remount /system
然而都会有报错
mount: '/system' not in /proc/mounts
后来又看到帖子说需要执行
adb root
adb disable-verity
然而会报错
verity cannot be disabled/enabled - USER build
虽然在 这篇帖子 中看到了很多办法(比如不勾选 Magisk 里面 Preserve AVB v2.0/dm-verity
重新新装)都无济于事。
在求助 Rikka 之后说 都 0202 年了直接写 /system
不太行,因此要用 Magisk 的模块装进去。大概的目录如下
charles_ca
├── META-INF
│ └── com
│ └── google
│ └── android
│ ├── update-binary
│ └── updater-script
├── module.prop
└── system
└── etc
└── security
└── cacerts
├── aaaaaaaa.0
└── bbbbbbbb.0
其中 update-binary
和 updater-script
的写法可参考 Magisk Module Installer
然后打包(记得检查一下打包完 .zip
的层级)好之后推到设备上,用 Magisk 安装模块就大功告成了。