Bypassing Bootloader Checks on Snapdragon 8 Elite via ABL Patching
Qualquer pessoa que tenha feito root em smartphones Android recentes nos últimos anos conhece essa dor. No momento em que você desbloqueia o bootloader, os apps bancários entram em greve, e as verificações do Play Integrity relatam alegremente um sistema comprometido. Geralmente as pessoas recorrem a módulos como TrickyStore ou patches de keystore, mas os fabricantes de chipsets e o Google continuam apertando os parafusos.
Recentemente, encontrei um projeto interessante chamado gbl_root_canoe pelo desenvolvedor superturtlee. O repositório foi arquivado desde que o autor trouxe a lógica de patching para um estado estável e travou a versão final. O projeto oferece uma abordagem incomum de baixo nível para resolver o problema em chips Snapdragon 8 Gen 5 e 8 Elite.
O que essa ferramenta faz
Essencialmente, gbl_root_canoe é um workspace baseado em EDK2 para modificar aplicações EFI dentro de imagens do ABL (Android Bootloader) da Qualcomm.
A ideia central do autor é explorar uma vulnerabilidade no GBL (Generic Bootloader Loader). O ABL stock carrega um BDS superfastboot personalizado diretamente da partição raw efisp. Esse BDS então escaneia uma partição compatível com filesystem ext4 ou fat32, encontra uma lista de boot entries preparada e transfere o controle para o ABL modificado.
Como resultado, o dispositivo inicializa com um estado falso de bootloader bloqueado (Fake Locked Bootloader). Para o sistema operacional e verificações de hardware, o dispositivo aparece como se seu bootloader estivesse completamente lacrado, enquanto na realidade você mantém acesso total às modificações.
Do que a solução consiste
Todo o mecanismo depende de uma combinação de vários componentes:
BDS.efi— um bootloader personalizado (superfastboot BDS) que é gravado diretamente na partiçãoefisp.boot.efi(chamadoABL.efina versão PC) — um binário ABL patcheado com status de lock falso. Ele reside no diretórioefisp/na partiçãopersist.BOOTENTRIES— um arquivo de configuração de texto com uma lista de caminhos para passar a cadeia de boot.LinuxLoader.efi(ABL_original.efi) — o ABL original não modificado, preservado para análise e rollback.
Essa separação permite evitar modificações diretas em partições do sistema a cada edição, isolando a lógica de bypass em partições de serviço efisp e persist.
Como funciona de uma perspectiva técnica
A arquitetura do projeto está atrelada à compilação cruzada de código C para UEFI e construção de utilitários de baixo nível extractfv e patch_abl.
Se você mesmo construir o toolkit a partir do código-fonte, precisará de um host Linux com o conjunto padrão de utilitários: Clang ou GCC, LLD, Python 3, MinGW-w64 e Android NDK. O script de build suporta múltiplos alvos:
# Сборка тулкита для 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
Para construir módulos de root manager, você nem precisa do dump da imagem de boot original abl.img do seu smartphone. O patcher compila cruzado para arquitetura Android e assembla em um arquivo zip pronto para instalação via KernelSU, Magisk ou APatch.
Peculiaridades de instalação e armadilhas
Trabalhar com partições de bootloader de baixo nível é arriscado, então o autor embutiu um cenário de instalação interativo diretamente no script do módulo.
Ao gravar o archive pela primeira vez via Magisk ou KernelSU, o controle é tratado através de botões físicos de volume:
- Volume Up (instalação primária): O script extrai
.abldo slot atual, faz patch emboot.efi, coloca os arquivosboot.efi,LinuxLoader.efieBOOTENTRIESno caminho/mnt/vendor/persist/efisp/, então gravaBDS.efina partiçãoefisp. - Após isso, você deve reiniciar no Recovery e realizar um Format Data completo.
- Depois que o sistema inicializa, o módulo é instalado novamente, mas desta vez você seleciona Volume Down para aplicar patches para manter a funcionalidade através de futuras atualizações OTA.
Se você preferir fazer tudo manualmente a partir de um computador, o toolkit permite descompactar o abl.img stock, executá-lo através dos scripts build.sh ou build.bat, e obter um ABL.efi patcheado.
A propósito, se o log patch_log.txt mostrar um aviso de que o patch do GBL não pôde ser aplicado, o vendor já fechou essa vulnerabilidade na sua versão de firmware atual. Nesse caso, você precisará fazer rollback da partição abl para um build anterior onde o bug ainda existe.
Gravar manualmente BDS.efi é feito via uma escrita padrão de bloco:
dd if=BDS.efi of=/dev/block/by-name/efisp bs=4M
Trabalhando com Superfastboot
Quando OEM Unlocking está ativado, durante o power-on do dispositivo quando a tela de aviso aparece, você pode segurar o botão de volume para baixo. O dispositivo entrará no modo Superfastboot (aquele BDS).
A partir daí, comandos fastboot familiares estão disponíveis, mas com capacidades estendidas:
# Временный запуск любого EFI-файла без прошивки
fastboot boot custom.efi
# Блокировка загрузчика со сбросом данных
fastboot flashing lock
# Разблокировка загрузчика без вайпа данных
fastboot flashing unlock
Aqui você precisa ter cuidado com chaves de criptografia. Se o status do TEE ficar dessincronizado, o chip seguro recusará liberar a chave de descriptografia para dados do usuário, e a partição Data permanecerá inacessível.
Quem se beneficiaria deste projeto
O projeto gbl_root_canoe provavelmente não é adequado para iniciantes que apenas querem instalar algumas tweaks no celular. Esta é uma ferramenta para entusiastas avançados, mantenedores de ROMs customizadas e aqueles profundamente familiarizados com a arquitetura de boot do Snapdragon e a estrutura de partições do Android.
Se você tem um dispositivo Snapdragon 8 Gen 5 ou 8 Elite e está cansado de lutar contra a detecção de bootloader desbloqueado no nível do SO, este repositório fornece uma maneira pronta e tecnicamente elegante de ignorar o problema no estágio inicial de inicialização EFI. O código-fonte é aberto sob licença GPL v3, então você pode fazer fork e adaptar o código livremente para seus próprios cenários customizados.
Projetos relacionados