>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
C

Omijanie kontroli bootloadera na Snapdragon 8 Elite poprzez patchowanie ABL

Każdy, kto w ciągu ostatnich kilku lat rootował nowsze smartfony z Androidem, zna ten ból. W chwili odblokowania bootloadera aplikacje bankowe strajkują, a kontrole Play Integrity z radością raportują naruszony system. Zazwyczaj ludzie uciekają się do modułów takich jak TrickyStore lub patchy keystore, ale producenci chipsetów i Google stale zaostrzają restrykcje.

Niedawno natknąłem się na interesujący projekt o nazwie gbl_root_canoe autorstwa dewelopera superturtlee. Repozytorium zostało zarchiwizowane, ponieważ autor doprowadził logikę patchowania do stabilnego stanu i zablokował ostateczną wersję. Projekt oferuje niekonwencjonalne niskopoziomowe podejście do rozwiązania problemu dla chipsetów Snapdragon 8 Gen 5 i 8 Elite.

Co robi to narzędzie

Zasadniczo gbl_root_canoe to przestrzeń robocza oparta na EDK2 do modyfikowania aplikacji EFI wewnątrz obrazów Qualcomm ABL (Android Bootloader).

Główna idea autora polega na wykorzystaniu luki w GBL (Generic Bootloader Loader). Stockowy ABL ładuje niestandardowy superfastboot BDS bezpośrednio z surowej partycji efisp. Ten BDS skanuje następnie kompatybilną partycję z systemem plików ext4 lub fat32, znajduje przygotowaną listę wpisów boot i przekazuje sterowanie do zmodyfikowanego ABL.

W rezultacie urządzenie bootuje z fałszywym zablokowanym stanem bootloadera (Fake Locked Bootloader). Dla systemu operacyjnego i kontroli sprzętowych urządzenie wygląda tak, jakby jego bootloader był całkowicie zaplombowany, podczas gdy w rzeczywistości zachowujesz pełny dostęp do modyfikacji.

Z czego składa się rozwiązanie

Cały mechanizm opiera się na kombinacji kilku komponentów:

  • BDS.efi — niestandardowy bootloader (superfastboot BDS) flashowany bezpośrednio na partycję efisp.
  • boot.efi (nazywany ABL.efi w wersji PC) — spatchowany binarny ABL z fałszywym statusem blokady. Znajduje się w katalogu efisp/ na partycji persist.
  • BOOTENTRIES — plik konfiguracyjny tekstowy z listą ścieżek do przekazania łańcucha boot.
  • LinuxLoader.efi (ABL_original.efi) — oryginalny niezmodyfikowany ABL, zachowany do analizy i przywrócenia.

Ta separacja pozwala unikać bezpośrednich modyfikacji partycji systemowych przy każdej edycji, izolując logikę obejścia w partycjach serwisowych efisp i persist.

Jak to działa z technicznego punktu widzenia

Architektura projektu jest powiązana z kompilacją krzyżową kodu C dla UEFI i budowaniem niskopoziomowych narzędzi extractfv i patch_abl.

Jeśli budujesz zestaw narzędzi ze źródeł samodzielnie, będziesz potrzebować hosta Linux ze standardowym zestawem narzędzi: Clang lub GCC, LLD, Python 3, MinGW-w64 oraz Android NDK. Skrypt budowania obsługuje wiele celów:

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

Aby zbudować moduły menedżera root, nie potrzebujesz nawet oryginalnego zrzutu obrazu boot abl.img swojego smartfona. Patcher kompiluje krzyżowo dla architektury Android i składa do archiwum zip gotowego do instalacji przez KernelSU, Magisk lub APatch.

Zagwozdki i pułapki przy instalacji

Praca z niskopoziomowymi partycjami bootloadera jest ryzykowna, więc autor wbudował interaktywny scenariusz instalacji bezpośrednio w skrypt modułu.

Podczas pierwszego flashowania archiwum przez Magisk lub KernelSU sterowanie odbywa się za pomocą fizycznych przycisków głośności:

  1. Głośność w górę (instalacja podstawowa): Skrypt wyodrębnia .abl z bieżącego slotu, patchuje go do boot.efi, umieszcza pliki boot.efi, LinuxLoader.efi i BOOTENTRIES w ścieżce /mnt/vendor/persist/efisp/, a następnie flashuje BDS.efi na partycję efisp.
  2. Po tym musisz uruchomić urządzenie w trybie Recovery i wykonać pełne Formatowanie Danych.
  3. Po uruchomieniu systemu moduł instaluje się ponownie, ale tym razem wybierasz Głośność w dół, aby zastosować patche utrzymujące funkcjonalność przez przyszłe aktualizacje OTA.

Jeśli wolisz robić wszystko ręcznie z komputera, zestaw narzędzi pozwala na rozpakowanie stockowego abl.img, przepuszczenie go przez skrypty build.sh lub build.bat i uzyskanie spatchowanego ABL.efi.

Przy okazji, jeśli log patch_log.txt pokazuje ostrzeżenie, że patch GBL nie mógł zostać zastosowany, producent już zamknął tę lukę w Twojej obecnej wersji firmware. W takim przypadku będziesz musiał przywrócić partycję abl do wcześniejszej kompilacji, gdzie błąd nadal istnieje.

Ręczne flashowanie BDS.efi odbywa się przez standardowy zapis blokowy:

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

Praca z Superfastboot

Gdy aktywowano Odblokowywanie OEM, podczas włączania urządzenia gdy pojawia się ekran ostrzegawczy, możesz przytrzymać przycisk głośności w dół. Urządzenie przejdzie w tryb Superfastboot (ten sam BDS).

Stamtąd dostępne są znajome polecenia fastboot, ale z rozszerzonymi możliwościami:

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

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

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

Tutaj musisz uważać na klucze szyfrowania. Jeśli status TEE zostanie rozynchronizowany, bezpieczny układ odmówi wydania klucza deszyfrującego dla danych użytkownika, a partycja Dane pozostanie niedostępna.

Kto skorzysta z tego projektu

Projekt gbl_root_canoe prawdopodobnie nie jest dla początkujących, którzy chcą tylko zainstalować kilka modyfikacji na telefonie. To narzędzie dla zaawansowanych entuzjastów, maintainerów niestandardowych ROM-ów oraz osób dobrze zaznajomionych z architekturą boot Snapdragon i strukturą partycji Androida.

Jeśli masz urządzenie Snapdragon 8 Gen 5 lub 8 Elite i masz dość walki z wykrywaniem odblokowanego bootloadera na poziomie systemu operacyjnego, to repozytorium dostarcza gotowe i technicznie eleganckie rozwiązanie pozwalające ominąć problem na wczesnym etapie inicjalizacji EFI. Kod źródłowy jest otwarty na licencji GPL v3, więc możesz swobodnie forkować i dostosowywać kod do własnych scenariuszy.

Powiązane projekty