>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
C

通过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.efiABL_original.efi)— 原始未修改的ABL,保留用于分析和回滚。

这种分离允许避免每次编辑时直接修改系统分区,将绕过逻辑隔离在服务分区efisppersist中。

从技术角度它是如何工作的

项目架构涉及为UEFI交叉编译C代码和构建低级工具extractfvpatch_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刷写存档时,控制通过物理音量按钮处理:

  1. 音量上键(主要安装):脚本从当前槽位提取.abl,将其修补为boot.efi,将文件boot.efiLinuxLoader.efiBOOTENTRIES放入路径/mnt/vendor/persist/efisp/,然后将BDS.efi刷写到分区efisp
  2. 之后,你必须重启进入Recovery并执行完整的格式化数据。
  3. 系统启动后,模块会再次安装,但这次你选择音量下键以应用补丁,保持未来OTA更新的功能性。

如果你更喜欢在计算机上手动完成所有操作,工具包允许解包原始abl.img,通过脚本build.shbuild.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并根据你自己的自定义场景进行调整。

相关项目