一加12刷机手动获取ROOT教程

前言

学会自己打补丁,以后不需要使用第三方工具获取root了,自己动手也不麻烦,思路如下:

1、获取到当前系统的boot.img(或者init_boot.img,如一加12 Color15版本就是init_boot.img)

2、使用magisk APP对boot.img打补丁

3、在Fastboot模式刷入boot.img补丁版本

思路就是这么简单,但前期可能就需要准备一下。

1、怎么获取当前系统的boot.img,一般下载全量包来解析全量包获取到boot.img或者init_boot.img

2、给手机刷boot.img补丁版,可以使用两种方式,一种是电脑给手机刷,一种是使用另一台手机给手机刷,手机够手机刷需要能够使用adb功能

基本信息

手机信息

系统信息:Color15,Android15

版本号:PJD110_15.0.0.502

基带版本:Q_V1_P14,Q_V1_P14

准备工作

ADB工具包(必选)

ADB工具包:https://rookie1679.lanzouq.com/ikBaf2q915gf

解包工具(必选)

Super Payload Dumper Py解包工具:https://rookie1679.lanzouq.com/iKIme2q91bfa

Super Payload Dumper Go解包工具:https://rookie1679.lanzouq.com/iCl8b2q91bvg

解包工具二选一即可(工具自带环境,不需要额外安装环境)

tips:Super Payload Dumper软件提示使用

一、解包全部分区

  1. 将rom文件或者ROM包的URL拖到unpack.exe图标上即可解包全部分区到output文件夹
  2. 多线程解包,速度超快

二、解包单个分区

解包单个分区镜像,将unpack.exe文件名改为你想解的分区名

  1. 如果要解包boot分区,请将unpack.exe重命名为boot.exe,然后将rom文件拖到boot.exe图标上。
  2. 如果要解包init_boot分区,请将unpack.exe重命名为init_boot.exe,然后将rom文件拖到boot.exe图标上。
  3. 其他分区同理,你可以将unpack.exe复制多份并重命名为不同分区名字以备日常使用。

驱动(必选)

建议两个驱动都安装,一加驱动是一加官方的驱动,下面是Android系统的驱动,建议都安装。

一加驱动:https://rookie1679.lanzouq.com/iPK392q91s9g

Android驱动:https://rookie1679.lanzouq.com/irSmO2q91t7a

系统ROM包

ROM包你可以看自己系统的版本,然后去大侠阿木官网下载一个ROM包(就是你系统的全量包),一般ROM包大小都有几个G以上的,像我一加12 Color15就7G

大侠阿木官网:https://yun.daxiaamu.com

你可以在大侠阿木官网下载ROM包,也可以去官网下载,大侠阿木也提供了百度云的ROM包,都可以用。

下载ROM全量包完成之后,准备工作就齐全了。

大侠阿木ROM

解包

先对全量包ROM解包,得到boot.imginit_boot.img

将上面准备工具中的解包工具解压打开,得到这样的文件(你解压是没有output文件夹的),如下图:

解包工具

你需要的操作就是,将全量包拖拽到unpack.exe文件里面,unpack.exe会自动执行解包操作的,解包结束会有一个output文件夹,这个文件夹就是解包后的各分区文件,我们需要的文件就是init_boot.img

boot.img:在这里是不起作用的,但后面如果你执行root的过程手机开不了机,或者变砖了,可以通过刷入boot.img可以救砖。

init_boot.img:等会用它给magisk打补丁,这一个解包过程就是为了达到这个文件

magis打补丁

打开USB调试

设置 – 关于手机 – 版本信息 – 连击 版本号 开启 开发者选项

设置 – 其他设置 – 开发者选项 – 开启 USB调试

打补丁

1、将电脑的init_boot.img文件传输到手机,使用数据线的传输的时候选择传输文件模式

2、手机安装magisk APP

金丝雀Magisk版:https://rookie1679.lanzouq.com/ilmTU2q9387g

3、打补丁,截图中的boot.img应该是init_boot.img文件,我改不小心名字了,你不用改,不影响的

magisk.img 每次修补生成的名字都不一样,使用的时候请输入生成的名字

打补丁

安装驱动

将下载的驱动双击安装即可

安装驱动

进入Fastboot

手机关机之后,长按电源键音量减键,即可进入Fastboot模式

刷入补丁

解压ADB工具包,将补丁文件复制到电脑中的ADB工具包里面,如下图这样的:

ADB工具包

可以在路径下输入cmd打开终端

打开终端

然后执行改命令

1
2
3
4
# 1、模板 fastboot flash init_boot init_boot.img
fastboot flash init_boot .\magisk_patched-27001_B4Hyi.img
# 2、刷入成功之后,重启手机
fastboot reboot

init_boot.img替换成你的init_boot.img文件名

我版本的init_boot.img补丁版本:https://rookie1679.lanzouq.com/iyPMd2q9dhud

刷入手机

如果出现< waiting for device >这个说明你手机没进入Fastboot模式,你需要手机关机之后,长按电源键音量减键,即可进入Fastboot模式

可能遇到的问题:https://magiskcn.com/waiting-for-any-device.html

LSPosed问题

如果你是Android 15,你可能会遇到一个问题,LSPosed有点异常,但也不是不能用,我是Android14升级到Android15(Color 14升级Color 15),LSPosed就出现了问题,LSP能正常使用,但app无法打开,寄生管理器也无法使用,打开就是闪退。

原因是LSPosed只支持Android14以下,不支持Android15,所以就出现了这个问题,至于什么时候支持,这个不清楚,所以我们需要另寻出路,用别的XPosed框架,目前有LSPosed、LSPatch、LSPosed第三方等众多的XP框架。

Android 15不支持官方的LSPosed框架,在酷安逛了一下,发现第三方LSPosed支持Android 15,我找到了Github的仓库。

第三方LSPosed仓库:https://github.com/JingMatrix/LSPosed

你可以去仓库下载LSP的模块,在magisk刷入,我下面也放了我下载好的蓝奏云版本,自取刷入即可。

Zygisk Next

Zygisk的独立实现,为KernelSU提供Zygisk API支持,并替代Magisk的内置Zygisk

代替Magisk的Zygisk方案:https://github.com/Dr-TSNG/ZygiskNext

刷入LSP

LSPosed蓝奏云下载:https://rookie1679.lanzouq.com/iPFAH2qacuzg

Zygisk Next蓝奏云下载:https://rookie1679.lanzouq.com/ilxcP2qacveb

在Magisk卸载原来的LSPosed模块,然后重启,再刷入上面这个LSPosed,如果不用Magisk自带的Zygisk,你可以刷入以上Zygisk Next模块。

payload_dumper进化版

对于上面解包的步骤,还有另一个方式,也是大侠阿木提供的教程,我这里只是提一下后面可能自己有需求,先记录一下,这个工具可以实现在线解包,也就是说可以把全量包的URL丢进去,在线解包得到你想要的分区img,同时还不需要在线下载全量包,这个就很方便,又省事,不过,有个前提是全量包所在的服务器需要支持ranges,但大侠阿木说一加的服务器是支持的,就可以在线解包了。

payload_dumper仓库地址:https://github.com/5ec1cff/payload-dumper

payload_dumper基于Python开发,所以你电脑想要用的话,还得电脑安装Python环境,

  • Python3 >= 3.8
  • pip

功能特性

这是一个修改版的 payload dumper ,除了具有它原先支持的功能,还支持以下特性:

  1. 从包含 payload.bin 的 zip 归档中直接提取分区,而无需解压。
  2. 从来自网络的包含 payload.bin (的 zip 归档)的 url (如 OTA 更新地址)直接提取分区,而无需下载整个文件。

借助该脚本,你只需要少量的时间和存储空间就能从 OTA 更新包或地址中提取你想要的分区,尤其是比较小的分区,如 boot, init_boot, vbmeta 等。

用法

1
2
pip install git+https://github.com/5ec1cff/payload-dumper
payload_dumper --partitions <需要dump的分区> <文件路径或 url>

指定文件导出位置

在后面加上--out D:\\rom\images路径即可

1
payload_dumper --partitions boot --out D:\\rom\images https://romurl.zip

转储整个 payload.bin 文件

1
payload_dumper payload.bin

转储特定分区

使用逗号分隔的要转储的分区列表:

1
payload_dumper --partitions boot,dtbo,vendor payload.bin

使用 OTA 修补旧镜像

假设旧分区位于名为 old/ 的目录中:

1
payload_dumper --diff payload.bin

本文章来源于我的博客:https://blog.hikki.site