概要
Androidのroot化をした.使用した端末はMotorola製のmoto g64 5G.bootイメージをflashし端末にKernelSUをインストールした流れ,root状態を隠蔽するために導入した各モジュールについて書き,最後にroot隠しの不完全性と近頃の諸相について軽く触れる.本記事はこうしたらこうなった,という記録であってチュートリアルではないので,参考にする際はしっかりと他ソースも参照していただきたい.
KernelSUの導入
基本的にはKernelSU(以下KSUと略す)のインストールガイドに従ってインストールする.ここではGKIモードでインストールする.流れとしては
boot.imgの入手 → 手動パッチ → flash
となる.adb, fastbootなどの基本的なツールを導入したPC(ここではWindows)とbootloader unlockした端末を用意.端末にはAndroid15が乗っていて2026-01時点で最新のアップデートを適用していた.
Stockイメージの入手
Motorola公式のSoftware fixをPCに入れる.これを使うと対応する端末のStockイメージが手に入る.また,このソフトのレスキュー機能で端末を修復できるので,しくじった時はこれを使う.得たboot.imgを掴む.
手動パッチ
PCにmagiskbootを入れ,パスを通しておく.先ほどのboot.imgを
magiskboot unpack boot.img
でバラす.kernelとramdisk.cpioというファイルができるはず.
次に端末のカーネルバージョンに合ったAnyKernelをここから入手.今回の場合,カーネルバージョンが5.10.233-android12-9-xxxであったのでAnyKernel3-android12-5.10.233_2025-02.zipをダウンロード.そのzipの中のImageというファイルを掴む.それを元のkernelファイルに上書き.そして
magiskboot repack boot.img
で改変したイメージnew-boot.imgを得る.
KSUの提供するboot.imgではブートループになった(もしかすると異なる圧縮形式を試せば成功するかもしれないが).そうなった場合はStockのboot.imgをflashすれば元通り.
イメージの書き込み
書き込みをするためにfastbootdモードに入る.PCに繋いで
adb reboot fastboot
で進入できたら
fastboot flash boot new-boot.img
イメージを焼く.OKAYと出ればOK.
fastbootモードでやると"Preflash validation failed"と出て失敗したので,fastbootdモードを使っている.
起動
fastboot reboot
で再起動して,無事OSが起動出来たらKSUのアプリを起動して「動作中<GKI>」と表示されていれば成功.
実はStockからこの方法で焼くと起動はしたがKSUが動作してなかった.そこでKSUアプリでパッチしたイメージを焼いてLKMで起動してから,GKIのイメージを焼いたら成功した.これがどういう問題であったか・再現されるかは不明.
root隠蔽
アプリの中にはその安全性を保証するためにroot化された端末を検知し,これを拒否するものがある.そしてそのようなroot検知を行うアプリは近年増加している.なので様々な細工をしてアプリがrootを検知しないようにする.
Play Integrityについて
Googleはアプリの安全保障のためにPlay Integrity API(以下PI)を提供している.ユーザーが正規の安全な環境を使用しているかアプリ側がクエリーすることができる.3段階の安全評価が利用できて,BASIC→DEVICE→STRONGの順で強い.
root検知を行うアプリ/テスター
Native Detector
様々な手段を使ってシステムの改変とその痕跡を検知するテストアプリ.何が引っ掛かったか一覧で表示してくれるのでテストに使う.非常に執拗な探知をするので,このアプリを完全に欺かなくても実用上問題ないことが多い.
Play Integrity Check
PIが通っているかチェックできるテストアプリ.頻繁なチェックはあまりよくないらしい.
Key Attestation
Attestationというシステムで,bootが正規のものかハードウェアの署名で検証するアプリ.これによってBootloaderがunlockedされていることが検知される.
金融・決済系
プリインのGoogle Walletはrootを検知すると使用不可になる.ほか銀行アプリの三井住友, VpassやRevolutは特に強めの検知をすることで知られている.
その他
オンライン・ソーシャルゲーム,漫画アプリなどもroot検知するものがある.マイナポータルなんかはSTRONGまで見るとか言われている.あとTelegramなどのクローズドなコミュニティで配布されているテストアプリなどをまとめたリポジトリがある.
root隠しモジュール
root検知に対抗するために,KSUからカーネルにモジュールを入れていく.依存関係もあるから,順番に入れていく.インストールごとに再起動が必要なものもある.
ZygiskNext
root隠しのベース機能を提供するZygiskの次世代版.
Zygisk Assistant
モジュールによる変更をアプリから見えなくする.Zygisk(Next)が必要.
LSPosed
様々なxposed系モジュールのベースになる前提フレームワークを提供.実行してLSPosed Managerを開く.メジャーな方はAndroid14までしか対応していないためこちらのフォークを使用.
Play Integrity Fork
PIチェックを通すためのモジュール.インストールしたら実行.
Tricky Store
Androidのkey attesationの鍵認証プロセスをいじる.これでPIとかbootの認証を騙すことができる.インストールするだけでは不十分で,あれこれ設定する必要があり,有効なキー(keybox)を入れておく必要がある.
Tricky Store Addon
Tricky Storeの設定をUIでできるようになる.また,ある程度の設定を自動でよしなにやって,リークされたkeyboxを拾ってきてくれる.
Integrity Box
さらに徹底的な隠蔽設定を自動でやってくれ,各種設定インターフェースを提供する.
VBMeta-Fixer
異常なブート状態を検知されるのを防ぐ.
これらを導入して,だいたいの改竄チェックは通過できるようになった.
rootアプリ隠し
署名認証チェックを通せたからといってroot検知アプリを欺けるわけではない.だいたいのアプリはもっと単純な方法: KSUマネージャをはじめとする,root関連アプリが入っているかどうか,でrootを検知する.だからHide My Applist(HMA)を使って,〈root検出をするアプリ〉から〈root関連のアプリ〉を見えなくしてやる.HMAはxposedモジュールなのでLSPosedが必要.
root検出をするアプリ
Playストア, Google Play開発者サービス, Googleサービスフレームワーク, ContactsKeys Storage などの鍵認証に関わるGoogleのベースアプリを入れ,Googleウォレットや各種検知テスター,騙したい銀行アプリなどを入れる.
隠すべきroot関連のアプリ
KSUマネージャアプリはもちろん,HMAアプリ自身も隠す必要がある.その他xposed系アプリも追加すればその度隠しておくのが良い.さらにアプリによってはShizuku, App Manager, Apktool Mなどの非rootでも使うようなアプリまで検知するものがあるため,こういった後ろ暗いアプリも隠しておくのが無難であろう.
隠してはいけないアプリもある.例えばYouTubeはGMSを使うので,この二つの間に目隠しを設定してしまうとアプリが起動しなくなる.
その他
USBデバッグを検知して起動拒否するアプリもある.XposedモジュールのIAmNotADeveloperを使う.また,認証に不備があるとDRMが使えずNetflixなどが見られなくなるのでDRM Infoでチェックする.当環境ではL1まで有効であった.
結果・議論
当環境ではこれでSTRONGまで通り,Wallet,Revolut, マイナポータルもrootチェックをパスして起動出来た.ただこれらのアプリ自体は使っていないので完全に動作するかまでは確認していない.rootチェックする一般アプリは必ずしもPIだけを見ているとは限らない.PIが通っていても弾かれたりその逆もある.Native Detectorで確認するとroot環境自体は検知されないものの不審なマウントやZygisk, LSPosedの痕跡が検知されている.しかし普通のアプリがここまでチェックすることはまずないので,このままでもよいと思われる.もっとやりたければ,さらに検知回避に特化したKernelSU Next + SUSFSというカーネルを使うことになるだろうか.
しかしここで行った処置は確実でも恒久的なものでもない.端末やモジュールの環境の微妙な違いで一部うまくいかなかったりすることがあるのはもちろんだが,こういった細工はGoogleが対策してきてアップデートで塞がれる可能性が高い.その上Googleはrootユーザーが使用するkeyboxを順次BANしているため,今入れているリークされたkeyboxは早晩焼かれることになるだろう.そうなるとまた新しいkeyboxを待つことになるが,それも焼かれていくだろう.このように,基本こちら側の分が悪いイタチごっこをしているわけで,常に環境設定の更新の必要に迫られることになるだろうから,XDAやTelegramなどのフォーラムで最新情報を確認しておくとよいだろう.自由にはコストがかかるもんである.