0x00 前言
众所周知,三星这块的root在以前都是挺方便的,除了熔断e-fuse有点心疼,毕竟保修就没了。但是,三星在OneUI8.0中删除了OEM解锁选项,让新手在解锁BL的时候就犯了难。
这时候,想在OneUI8.0上root可谓难如登天。
0x01 分析
根据分析,三星在OneUI8.0上去除了OEM解锁的选项,但是我们知道OneUI7是可以解锁BL和root的。那么,我们是不是可以用OneUI7的BL包里的abl.elf.lz4来蒙混过关呢?
答案是:可以。
为什么呢?
以下为个人见解。
三星的rom有着非常恶心的防回滚机制,简单来说,我们可以看手机的软件版本号倒数第五位的字符,我们称之为“BIT/BINARY value。
(以下部分内容来自samfw)
BIT, BINARY, U, or SW REV是什么?
在下载或刷入三星固件时,你可能会看到名为 BIT、BINARY、U 或 SW REV 的数值。
这些术语实际上指向同一概念:三星引导加载程序版本号(SW REV)。
三星将此数值作为安全机制,用于防止将引导加载程序降级至旧版本。
在 Samfw.com 网站上,该数值显示为 BIT。
三星仅允许刷入 SW REV 值等于或高于设备当前已安装版本的固件。
例如:
若手机当前为 BIT 5,则可刷入 BIT 5、6、7、8、9、A、B……
不可刷入 BIT 4 或更早版本。
SW REV 的递增序列如下:
0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → A → B → C → D → E → F……
其中:
A 高于 9
B 高于 A
以此类推……
对的,那你问我为什么说这个,那我会回答。
因为S9280这个机型从OneUI6.1到OneUI8.0之间绝大多数版本的BIT都是4,说明这几个版本之间可以随意互刷(如下图)。



在这里面,Android14就是OneUI6.1,15是7,16是8.0。我们不妨开动脑筋,因为这些可以互刷,那么我们是不是可以将OneUI7的BL替换到OneUI8.0上呢?
那么好,实践开始
0x02 实践
我这次走的是内核root路线,但是有些地方还是要借助Magisk来完成。
准备材料
- OneUI7 国行末版 BL(取
abl.elf.lz4,rev4) - OneUI8 目标版四件套(记住了,要下载rev4的版本,这个机型的OneUI8.0的后面几个版本的rev升级成5了)
- Magisk App(手机里,只借道拿 patched vbmeta)
- SukiSUU 的 S9280 AnyKernel3 zip(推荐Github大神Yuzaki Kokuban的,用TWRP刷的adb sideload)
- TWRP(官网的TWRP似乎寄了,我这里分享一下可以用odin直接刷的(tar))
操作步骤
Step 1:Magisk 借道,拿 patched vbmeta
PC 端先组装”带 vbmeta 的 AP”让 Magisk patch(因为 8 官方 AP 里没 vbmeta,vbmeta 在 BL 包里):
先在电脑上随便找个空文件夹,比如叫「ONEUI8_ROOT」,双击打开它。
把你下好的两个官方包:一个是AP包(AP_XXX.tar.md5),一个是BL包(BL_XXX.tar.md5),都复制粘贴进这个文件夹里。
先处理BL包:右键点BL_XXX.tar.md5→选7-Zip→「打开压缩包」,在里面找到叫vbmeta.img.lz4的文件,右键点它→「复制到…」,选刚才的「ONEUI8_ROOT」文件夹,把它单独拽出来备用。
再处理AP包:右键点AP_XXX.tar.md5→选7-Zip→「解压到 AP_XXX\」(7-Zip会自动建一个同名的文件夹),打开这个刚解压出来的AP文件夹,里面能看到boot、init_boot、super这些文件。
把刚才从BL包里拷出来的vbmeta.img.lz4,复制粘贴到这个AP文件夹里,和那些boot、init_boot文件放一起就行,文件名别改。
全选这个AP文件夹里的所有文件(包括刚粘进来的vbmeta),右键→7-Zip
拷 AP_with_vbmeta.tar到手机 → Magisk App → Install → Select and Patch a File → 出 magisk_patched.tar。
Step 2:拆 magisk_patched.tar,组 AP_final(boot 原厂 + init_boot 原厂)
拆 magisk_patched.tar:
vbmeta.img.lz4→ Magisk--remove-avb过的 留着给 BL- 其余(
boot.img.lz4/init_boot.img.lz4/super.img.lz4/ vendor 等)→ 来自 Magisk patch 但 boot/init_boot 是 Magisk 动过的,不要
boot 和 init_boot 换回官方原厂(从 Step1 第一次解的原始 AP 目录里拿 boot.img.lz4+ init_boot.img.lz4原厂版),替换掉。
AP_final 目录文件:
boot.img.lz4
init_boot.img.lz4
super.img.lz4
vendor.img.lz4 等
在这里,把boot和init_boot删掉,换成原厂AP里的boot和init_boot。
AP_final 里不放 vbmeta,vbmeta 归 BL 格管。
Step 3:改 BL_final(OneUI7 abl + Magisk patched vbmeta)
先把你下好的官方OneUI8的BL包(就是BL_XXX.tar.md5)右键用7-Zip打开,把所有里面的文件都解压到同一个空文件夹里——你能看到一堆带.elf、.mbn、.lz4后缀的文件,其中有abl.elf.lz4和vbmeta.img.lz4。
把这个文件夹里的abl.elf.lz4删掉,换成你之前从OneUI7末版BL里抠出来的那个abl.elf.lz4(就是7的abl,松AVB那个,直接复制粘贴过来覆盖就行,文件名别改)。
再把文件夹里的vbmeta.img.lz4也删掉,换成你之前Magisk修补好的那份vbmeta.img、(就是之前Step2拿到的那个,同样复制粘贴覆盖,文件名别改)。记得把修补过的ap里的vbmeta.img删掉。
剩下的所有文件(比如km4ft.elf、tz.mbn、devcfg.elf这些)一个都别动,原封不动留着,多一个少一个都不行。
全选这个文件夹里的所有文件,右键→7-Zip→“添加到压缩包”,压缩格式选tar,名字随便起比如BL_final.tar。
文件列表必须跟官方 BL 原包一致(tar -tf BL_XXX.tar.md5先记)。
Step 4:Odin 第一次刷
| Odin 格 | 文件 |
|---|---|
| BL | BL_final.tar(7 abl + patched vbmeta) |
| AP | AP_final.tar(原厂 boot + 原厂 init_boot)或者原厂AP,但是原厂AP导入后需要校验,会花很长时间 |
| CP | CP_XXX.tar.md5(或空) |
| CSC | HOME_CSC_CHC_XXX.tar.md5(HOME开头是报数据的,但是我不建议这么做,还是先备份数据然后清除Data再刷比较保险,不会有奇怪的玄学问题) |
PASS → 开机 → 此时是无Root状态(boot 原厂 6.1.128 + init_boot 原厂 + 7 abl + patched vbmeta)。
Step 5:TWRP 侧载刷 SukiSU
进 TWRP(adb reboot recovery):
Advanced → ADB Sideload → 划过去激活
PC 端:adb sideload <你的SukiSU,etc.的包>
TWRP 跑完 → Reboot System。
然后可能还要金TWRP格式化一下Data分区。至此,你应该能在OneUI8.0上使用SukiSU了。
本文终结。
本文采用 CC BY-NC-SA 4.0 国际许可协议进行许可。
转载请注明作者及原文链接,并遵循相同方式共享原则。
链接:
发表回复