通过ABL修补绕过Snapdragon 8 Elite的Bootloader检查
过去几年里root过Android智能手机的人都知道这种痛苦。一旦你解锁bootloader,银行应用就会罢工,Play Integrity检查会愉快地报告系统已被篡改。人们通常会使用TrickyStore或keystore补丁等模块,但芯片厂商和Google不断收紧限制。
最近我发现了一个由开发者superturtlee创建的有趣项目gbl_root_canoe。该仓库已被归档,因为作者将补丁逻辑稳定化并锁定了最终版本。该项目为Snapdragon 8 Gen 5和8 Elite芯片提供了一个非常规的低级解决方案。
这个工具的作用
从本质上讲,gbl_root_canoe是一个基于EDK2的工作区,用于修改Qualcomm ABL(Android Bootloader)镜像中的EFI应用程序。
作者的核心思路是利用GBL(Generic Bootloader Loader)中的漏洞。原始ABL直接从原始分区efisp加载自定义的superfastboot BDS。然后这个BDS扫描ext4或fat32文件系统的兼容分区,找到准备好的启动条目列表,并将控制权转移给修改后的ABL。
结果,设备以虚假的锁定bootloader状态启动(Fake Locked Bootloader)。对于操作系统和硬件检查,设备看起来好像其bootloader完全密封,但实际上你仍然保留完全修改权限。
解决方案的组成
整个机制依赖于多个组件的组合:
BDS.efi— 一个直接刷写到分区efisp的自定义bootloader(superfastboot BDS)。boot.efi(在PC版本中称为ABL.efi)— 一个带有虚假锁定状态的已修补ABL二进制文件。它位于分区persist上的目录efisp/中。BOOTENTRIES— 一个文本配置文件,包含用于传递启动链的路径列表。LinuxLoader.efi(ABL_original.efi)— 原始未修改的ABL,保留用于分析和回滚。
这种分离允许避免每次编辑时直接修改系统分区,将绕过逻辑隔离在服务分区efisp和persist中。
从技术角度它是如何工作的
项目架构涉及为UEFI交叉编译C代码和构建低级工具extractfv和patch_abl。
如果你从源代码自行构建工具包,你将需要一台装有标准工具集的Linux主机:Clang或GCC、LLD、Python 3、MinGW-w64和Android NDK。构建脚本支持多个目标:
# Сборка тулкита для Linux
make target_toolkit_linux
# Сборка тулкита под Windows (через MinGW-w64)
make target_toolkit_windows
# Сборка модуля для KernelSU / Magisk / APatch через Android NDK
make target_magisk_module
# Сборка автономного набора утилит для запуска прямо на Android (arm64)
make target_toolkit_android
要构建root管理器模块,你甚至不需要智能手机的原始boot镜像转储abl.img。补丁程序为Android架构进行交叉编译,并组装成zip存档,准备通过KernelSU、Magisk或APatch安装。
安装注意事项和陷阱
处理低级bootloader分区是有风险的,所以作者将交互式安装场景直接嵌入到模块脚本中。
首次通过Magisk或KernelSU刷写存档时,控制通过物理音量按钮处理:
- 音量上键(主要安装):脚本从当前槽位提取
.abl,将其修补为boot.efi,将文件boot.efi、LinuxLoader.efi和BOOTENTRIES放入路径/mnt/vendor/persist/efisp/,然后将BDS.efi刷写到分区efisp。 - 之后,你必须重启进入Recovery并执行完整的格式化数据。
- 系统启动后,模块会再次安装,但这次你选择音量下键以应用补丁,保持未来OTA更新的功能性。
如果你更喜欢在计算机上手动完成所有操作,工具包允许解包原始abl.img,通过脚本build.sh或build.bat运行它,并获得修补后的ABL.efi。
顺便说一下,如果日志patch_log.txt显示警告说GBL补丁无法应用,说明厂商已经在你当前的固件版本中关闭了这个漏洞。在这种情况下,你需要将分区abl回滚到漏洞仍然存在的早期版本。
手动刷写BDS.efi是通过标准块写入完成的:
dd if=BDS.efi of=/dev/block/by-name/efisp bs=4M
使用Superfastboot
当OEM Unlocking被激活时,在设备开机出现警告屏幕时,你可以按住音量下键。设备将进入Superfastboot模式(那个BDS)。
从那里,可以使用熟悉的fastboot命令,但具有扩展功能:
# Временный запуск любого EFI-файла без прошивки
fastboot boot custom.efi
# Блокировка загрузчика со сбросом данных
fastboot flashing lock
# Разблокировка загрузчика без вайпа данных
fastboot flashing unlock
这里你需要小心加密密钥。如果TEE状态变得不同步,安全芯片将拒绝释放用户数据的解密密钥,Data分区将保持不可访问。
谁会从这个项目中受益
gbl_root_canoe项目不太可能适合只想在手机上安装几个小调整的初学者。这是一个面向高级爱好者、自定义ROM维护者以及非常熟悉Snapdragon启动架构和Android分区结构的人的工具。
如果你有一台Snapdragon 8 Gen 5或8 Elite设备,并且厌倦了在操作系统层面与解锁bootloader检测作斗争,这个仓库提供了一种现成的、技术上优雅的方式,在早期EFI初始化阶段绕过这个问题。源代码在GPL v3许可下开源,因此你可以自由地fork并根据你自己的自定义场景进行调整。
相关项目