ABLパッチでSnapdragon 8 Eliteのブートローダーチェックをバイパスする
過去数年間に最近のAndroidスマートフォンにルートを導入したことがある人なら、この痛苦は周知のことでしょう。ブートローダーのロックを解除した途端、銀行アプリがストライキを起こし、Play Integrityチェックは喜んでシステム侵害を報告します。通常、人々はTrickyStoreやキーストアパッチなどのモジュールに頼りますが、チップセットメーカーとGoogleは締め付けを強めています。
最近、开发者superturtleeによるgbl_root_canoeという興味深いプロジェクトを見つけました。リポジトリは、パッチロジックが安定した状態に達し、最終リリースがロックされたため、作者によってアーカイブされています。このプロジェクトは、Snapdragon 8 Gen 5および8 Eliteチップ向けの解決策として、型破りな低レベルアプローチを提供します。
このツールできること
本質的に、gbl_root_canoeは、Qualcomm ABL(Android Bootloader)イメージ内のEFIアプリケーションを変更するためのEDK2ベースワークスペースです。
作者の中核的なアイデアは、GBL(Generic Bootloader Loader)の脆弱性を悪用することです。ストックABLは、生パーティションefispからカスタムsuperfastboot BDSを直接ロードします。このBDSはext4またはfat32ファイルシステムで互換性のあるパーティションをスキャンし、準備されたブートエントリリストを見つけ、修正されたABLに制御を移します。
結果として、デバイスは偽のロックされたブートローダー状態(Fake Locked Bootloader)で起動します。OSとハードウェアチェックにとって、デバイスはブートローダーが完全に封印されているように見えますが、実際には変更へのフルアクセスを維持しています。
ソリューションの構成要素
メカニズム全体がいくつかのコンポーネントの組み合わせに依存しています:
BDS.efi— パーティションefispに直接フラッシュされるカスタムブートローダー(superfastboot BDS)。boot.efi(PCバージョンではABL.efiと呼称)— 偽のロック状態を持つパッチ済みABLバイナリ。パーティションpersistのディレクトリefisp/に配置。BOOTENTRIES— ブートチェーンを渡すためのパスリストを含むテキスト設定ファイル。LinuxLoader.efi(ABL_original.efi)— 分析とロールバックのために保存された元の未修正ABL。
この分離により、編集ごとにシステムパーティションへの直接変更を避け、バイパスロジックをサービスパーティションefispとpersistに隔離できます。
技術的な観点からどのように動作するか
プロジェクトアーキテクチャは、UEFI用のCコードのクロスコンパイルと、低レベルユーティリティextractfvとpatch_ablのビルドに関連付けられています。
ソースからツールキットをビルドする場合は、ClangまたはGCC、LLD、Python 3、MinGW-w64、Android NDKなど、標準的なユーティリティセットを備えたLinuxホストが必要です。ビルドスクリプトは複数のターゲットをサポートしています:
# Сборка тулкита для 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
ルートマネージャーモジュールをビルドするには、スマートフォンの元のブートイメージダンプabl.imgすら必要ありません。パッチャーはAndroidアーキテクチャ用にクロスコンパイルし、KernelSU、Magisk、またはAPatch経由でインストール可能なzipアーカイブにアセンブルします。
インストール時の注意点と落とし穴
低レベルのブートローダーパーティションを操作することは危険な作業なので、作者はモジュールスクリプトに直接対話型インストールシナリオを埋め込んでいます。
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ロック解除が有効になっている場合、デバイスの電源投入時に警告画面が表示されたら、音量ダウンボタンを長押しできます。デバイスは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デバイスを持っていて、OSレベルでロック解除されたブートローダー検出と戦い疲れている場合、このリポジトリは早期のEFI初期化段階で問題をバイパスする準備完了で技術的に洗練された方法を提供します。ソースコードはGPL v3ライセンスで公開されているため、独自のカスタムシナリオに合わせてコードを自由にフォークして適応させることができます。
関連プロジェクト