>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
C

Bootloader-controles omzeilen op Snapdragon 8 Elite via ABL-patching

Iedereen die de afgelopen jaren recente Android-smartphones heeft geroot, kent deze frustratie. Op het moment dat je de bootloader ontgrendelt, gaan bankapps in staking en melden Play Integrity-checks vrolijk een gecompromitteerd systeem. Meestal grijpen mensen naar modules zoals TrickyStore of keystore-patches, maar chipsetfabrikanten en Google blijven de duimschroeven aandraaien.

Onlangs stuitte ik op een interessant project genaamd gbl_root_canoe van ontwikkelaar superturtlee. De repository is gearchiveerd sinds de auteur de patching-logica naar een stabiele staat heeft gebracht en de definitieve release heeft vastgezet. Het project biedt een onconventionele low-level benadering voor het oplossen van het probleem voor Snapdragon 8 Gen 5 en 8 Elite-chips.

Wat dit hulpmiddel doet

In essentie is gbl_root_canoe een op EDK2 gebaseerde werkruimte voor het modificeren van EFI-applicaties binnen Qualcomm ABL (Android Bootloader) images.

De kerngedachte van de auteur is het misbruiken van een kwetsbaarheid in GBL (Generic Bootloader Loader). De stock ABL laadt een aangepaste superfastboot BDS rechtstreeks van raw partitie efisp. Deze BDS scant vervolgens een compatibele partitie met ext4- of fat32-bestandssysteem, vindt een voorbereide boot entry list en draagt de controle over naar de gewijzigde ABL.

Als gevolg hiervan boot het apparaat met een nep vergrendelde bootloader-status (Fake Locked Bootloader). Voor het besturingssysteem en hardwarecontroles lijkt het apparaat alsof de bootloader volledig verzegeld is, terwijl je in werkelijkheid volledige toegang tot modificaties behoudt.

Waaruit de oplossing bestaat

Het gehele mechanisme rust op een combinatie van verschillende componenten:

  • BDS.efi — een aangepaste bootloader (superfastboot BDS) die rechtstreeks naar partitie efisp wordt geflasht.
  • boot.efi (ook ABL.efi genoemd in de PC-versie) — een gepatchte ABL-binary met neppe vergrendelingsstatus. Het bevindt zich in directory efisp/ op partitie persist.
  • BOOTENTRIES — een tekstconfiguratiebestand met een lijst van paden voor het doorgeven van de boot chain.
  • LinuxLoader.efi (ABL_original.efi) — de originele ongewijzigde ABL, bewaard voor analyse en rollback.

Deze scheiding maakt het mogelijk om directe wijzigingen aan systeempartities bij elke bewerking te vermijden, waarbij de bypass-logica wordt geïsoleerd in servicepartities efisp en persist.

Hoe het technisch gezien werkt

De projectarchitectuur is gekoppeld aan cross-compileren van C-code voor UEFI en het bouwen van low-level utilities extractfv en patch_abl.

Als je de toolkit zelf uit de broncode bouwt, heb je een Linux-host nodig met de standaard set aan utilities: Clang of GCC, LLD, Python 3, MinGW-w64 en Android NDK. Het build-script ondersteunt meerdere targets:

# Сборка тулкита для 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

Om root manager-modules te bouwen, heb je niet eens de originele boot image dump abl.img van je smartphone nodig. De patcher cross-compileert voor Android-architectuur en assembleert tot een zip-archief dat klaar is voor installatie via KernelSU, Magisk of APatch.

Bijzonderheden en valkuilen bij de installatie

Werken met low-level bootloader-partities is riskant, dus de auteur heeft een interactief installatiescenario direct in het module-script ingebed.

Bij het voor de eerste keer flashen van het archief via Magisk of KernelSU wordt de besturing afgehandeld via fysieke volumeknoppen:

  1. Volume Omhoog (primaire installatie): Het script extraheert .abl uit de huidige slot, patcht het naar boot.efi, plaatst bestanden boot.efi, LinuxLoader.efi en BOOTENTRIES in pad /mnt/vendor/persist/efisp/ en flasht vervolgens BDS.efi naar partitie efisp.
  2. Hierna moet je herstarten naar Recovery en een volledige Format Data uitvoeren.
  3. Nadat het systeem is opgestart, wordt de module opnieuw geïnstalleerd, maar deze keer selecteer je Volume Omlaag om patches toe te passen voor het behouden van functionaliteit bij toekomstige OTA-updates.

Als je er de voorkeur aan geeft om alles handmatig vanaf een computer te doen, stelt de toolkit je in staat om de stock abl.img uit te pakken, het door scripts build.sh of build.bat te halen en een gepatchte ABL.efi te krijgen.

Overigens, als het logboek patch_log.txt een waarschuwing toont dat de GBL-patch niet kon worden toegepast, heeft de vendor deze kwetsbaarheid al gesloten in je huidige firmwareversie. In dat geval moet je partitie abl terugzetten naar een eerdere build waar de bug nog bestaat.

Handmatig flashen van BDS.efi gebeurt via een standaard block write:

dd if=BDS.efi of=/dev/block/by-name/efisp bs=4M

Werken met Superfastboot

Wanneer OEM Unlocking is geactiveerd, kun je tijdens het inschakelen van het apparaat, wanneer het waarschuwingsscherm verschijnt, de volume omlaag-knop ingedrukt houden. Het apparaat zal in Superfastboot-modus terechtkomen (die BDS).

Vanaf daar zijn vertrouwde fastboot-commando's beschikbaar, maar met uitgebreide mogelijkheden:

# Временный запуск любого EFI-файла без прошивки
fastboot boot custom.efi

# Блокировка загрузчика со сбросом данных
fastboot flashing lock

# Разблокировка загрузчика без вайпа данных
fastboot flashing unlock

Hier moet je voorzichtig zijn met encryptiesleutels. Als de TEE-status uit synchronisatie raakt, weigert de secure chip de ontsleutelingssleutel voor gebruikersgegevens vrij te geven en blijft de Data-partitie ontoegankelijk.

Wie heeft baat bij dit project

Het gbl_root_canoe-project is waarschijnlijk niet geschikt voor beginners die gewoon een paar tweaks op hun telefoon willen installeren. Dit is een hulpmiddel voor gevorderde enthousiastelingen, custom ROM-maintainers en degenen die zeer vertrouwd zijn met Snapdragon boot-architectuur en Android-partitiestructuur.

Als je een Snapdragon 8 Gen 5 of 8 Elite-apparaat hebt en het beu bent om te vechten tegen ontgrendelde bootloader-detectie op OS-niveau, biedt deze repository een kant-en-klare en technisch elegante manier om het probleem te omzeilen in het vroege EFI-initialisatiestadium. De broncode is open onder GPL v3-licentie, dus je kunt vrij forken en de code aanpassen voor je eigen aangepaste scenario's.

Gerelateerde projecten