简单记录一下 root 流程和 root 后的一些优化,以后想再刷的话可以参考一下。
本文仅用作记录,如果他人使用本文方法造成数据丢失或手机损坏,本人概不负责。
本文不是 root 教程,需要用户对电脑的使用方法有一定的了解。
解锁 bootloader
这一步会造成数据丢失,请谨慎操作。
进入开发者模式,打开 OEM 解锁和 USB 调试。
连接电脑,执行命令:
adb reboot bootloader
重启到 fastboot 界面后,输入:
fastboot flashing unlock
进入新页面后通过手机上的音量键选择,电源键确认。之后就解锁 bootloader 了。
Root
为什么不用 ksu 的原因看这里。
首先下载符合自己手机版本的全量包,解压,然后下载固件提取工具提取 init_boot.img
,拷贝进手机中。
从 Android13 开始,ramdisk 被从 boot 镜像中移除,放进了单独的 init_boot.img 文件中,因此现在需要 patch init_boot.img 而不是 boot.img。
下载安装 magisk delta(现在也叫 Kitsune Mask),安装修补 init_boot.img
,生成一个新的 boot 文件,长得类似于 magisk_patched-xxx.img
,拷贝到电脑中。
接下来就该测试修补是否顺利了,执行:
adb reboot bootloader
再次进入 fastboot 模式,然后执行:
fastboot flash init_boot magisk_patched-xxx.img
这一步会将 init_boot 刷入手机,请确保你修补了正确的版本。
接着执行
fastboot reboot
重启,点进 Magisk Delta,修复运行环境重启即可。
保留 root OTA 更新
首先进入系统更新界面,如果不是全量包也可以下载并安装,这样会因为解压出错多次要求你点击重试,就会切换到全量包下载。
在全量包下载后会经历解压和校验阶段,等待解压和校验完成,界面上会出现立即安装字样,不要安装,进入 Magisk。
如果在这里点击安装,则会重启手机,掉 Magisk。
进入 Magisk 后选择 Magisk 侧的安装,选择“安装到未使用的槽位(OTA后)”,会弹出来一条警告,点击确定,会开始安装直到出现“ALL DONE”字样。
此时不要点击 Magisk 的重启按钮,回到系统更新界面,通过系统更新界面上的“立即安装”按钮更新系统。
我没试过,但是我猜这样就不会更新系统,还是需要去系统更新界面点一下。
这样就可以保留 root 更新系统了。
Magisk Hide
进入 Magisk Delta 开启 SuList 即可。
优化
仅作参考,如果他人用本文方法出现卡启动、死机、无限重启等问题,本人概不负责。
冻结应用
- 使用冰箱冻结一些系统 App:
- 应用安装器 com.oplus.appdetail
- 手机管家 com.coloros.phonemanager
- 健康数据平台 com.oplus.healthservice
- 浏览器 com.heytap.browser
- 后台广告 com.opos.ads
- 天气服务 com.coloros.weather.service
- 快应用 com.nearme.instant.plaform
- 为了避免出现厂商强制升级导致的悲剧,推荐冻结 OTA 升级,等需要升级的时候解冻然后保留 root OTA 更新即可。
- 软件更新 com.oplus.ota
- 自带的应用商店更新很慢,不如酷安甚至华为应用商店,也可以冻结:
- 软件商店 com.heytap.market
目前遇到的问题
- R-安装组件并没有替代系统安装组件
- 尚未解决,不过冻结了应用安装器后系统自带的安装器速度飞快,只要不安装不明来源的软件、没受到供应链攻击就无所谓了~~,但是很恶心的一点是安装包界面带广告~~。
- 在冻结软件商店之后广告就没啦~
- 尚未解决,不过冻结了应用安装器后系统自带的安装器速度飞快,只要不安装不明来源的软件、没受到供应链攻击就无所谓了~~,但是很恶心的一点是安装包界面带广告~~。
- 微信无法使用指纹支付
- 这是因为一加手机在解锁 bl 之后 TEE 会假死,微信支付时会检测 TEE。有模块可以解决这个问题,但它的原理并不是让 TEE 恢复而是做了 hook,在输入密码的时候调用指纹,验证成功后帮你自动输入,效果如何就见仁见智吧。
修改自启动限制
另外一个蛋疼的点是一加限制了应用自启动的数量,ColorOS 只允许 5 个“不建议的”应用自启动,那就只好修改限制了。
用 LuckyTool 修改了。
失败的分割线
打开文件 /data/user_de/0/com.android.launcher/shared_prefs/Configuration.xml
(PS:OPPO 你咋还改名的,我看两年前还叫 com.oppo.launcher
来着)
坏了,里面没有 lock_app_limit
参数。
急救措施
在安装模块的时候最好就安装救砖模块。
暂时还没遇到变砖的情况,等遇到了再补充吧。
ColorOS 槽点
- 推送不行
- 靠 Mipush Framework 解决(理论上可行,我还没尝试)
- 广告太多
- 全冻结掉
- 我勒个去,官方还直接推送短信广告的?我直接拉黑了。
- 没有息屏指纹解锁
非常坏,只能自适应了现已更新
碎碎念
Kernel SU
其实我更想用 Kernel SU 的,我觉得这是更现代的 root 方式,但是逛了一圈 ksu 的 repo,发现黑厂似乎在 f2fs 文件系统中加料导致必须格式化 data 才能用 ksu,我不想每次更新都格式化一遍手机,就放弃了,等未来哪位大佬编译内核或者我有时间看看再说吧。
OPPO 开源的内核 repo:https://github.com/oppo-source/android_kernel_oppo_sm8475/tree/oppo/sm8475_u_14.0.0_find_n2
- 一些可能可以参考的资料:
如果论侵入方式的话,Magisk 的侵入方式要比 Kernel SU 友好很多,因为 ksu 的构建是建立在 GKI 出现会让内核碎片化消失这一基础上的。但是现在看来并非如此:小米对解锁 bl 层层加码,OPPO 修改内核源码导致内核不通用,华为很难用到最新的安卓特性……肉眼可见的未来,我们仍将面对一个支离破碎的安卓开发与使用环境。
扯远了,如果要使用 ksu 的话,我们需要替换原厂内核为 ksu 提供的内核,但如果厂家修改了内核的话就只能自行编译了;而 Magisk 则只需要修补 boot.img 或 init_boot.img,侵入性更小。当然话说回来 ksu 隐藏 root 的能力更强,可以提供给用户更多的功能(就像 LSPosed 之于之前的所有 Xposed 工具那样)……
目前看来 Magisk Delta 是足够我日常使用的,等哪天 Delta 不能用了我再考虑 ksu 吧,说不定那时就有了成熟的 ksu 方案了呢。
为啥不买小米
本来我盲订了小米 14 Pro 的,但是第二天看到雷总关于存储扩容技术的惊人言论以及小米对解锁越发严格的限制,我只好退订了。毕竟我没用过小米社区也不是资深 Android 开发者,之前解锁小米手机也从没出现过问题,还不想加钱解锁,只是单纯用点插件罢了,还好没有被米家生态绑定。
一键 root
一键工具箱确实很好,我也相信作者考虑周全,我就是想自己试试 .jpg。
因为黑厂的全量包固件是加密的,我还是用了大侠阿木的 ROM 提取工具,但是我对提取算法比较感兴趣,因此尝试逆向一下这个提取工具。不过显然作者加了壳(也可能是编译默认就带壳),用 PEiD 简单看了一下是 PEncrypt 4.0 Gamma / 4.0 Phi -> junkcode
这个壳。去网上搜了一下好像是个异常壳,找个时间看一下吧。
- 如果只是对算法感兴趣的话,可以看这篇文章:How To Extract Payload.Bin And Get Stock Boot Image File
- 似乎这个脚本也可以?记录一下:https://github.com/vm03/payload_dumper
Awesome Android App
仅作参考,如果他人使用下述软件出现死机、数据丢失、隐私被窃取等问题,本人概不负责。
记录实用程序、Magisk 模块和 LSPosed 模块,基本上都是我用过的。
- 能少装模块就少装模块
- 尽量选择开源工具
F-Droid 添加 repo: