
Root-My-Device v0.0.6
CVE-2026-43499 を含む対応ファームウェア向け KSU インストーラー
Root My Device
BuSung-dev/Root-My-Galaxy のフォークであり、Apache License 2.0 に基づきます — LICENSE と クレジット を参照してください。
Root My Device は、明示的にサポートされているファームウェアビルド向けのワンクリックインストーラーです。アプリケーション本体は、デバイスオフセット、ネイティブエクスプロイトペイロード、KernelSU ビルド成果物から分離して管理されています。
デバイスフィードとネイティブペイロードは Root-My-Device-Payloads で管理されています。その main ブランチへのプッシュのたびにペイロードがビルドされ、その実行に固有のタグを付けた GitHub リリースとして公開されます。アプリはそのリポジトリの releases/latest を解決し、そこから targets-v2.json アセットを読み取り、そこに記載されたすべてのアーティファクトをダウンロードします。つまり、インストールされるペイロードのセットは、公開されると不変であり、バイナリとしてコミットされるものはありません。
アプリケーション
アプリは、カーネルリリース、完全なビルド表示 ID、SDK、ABI、ページサイズに正確に一致するものを自動的に選択します。上級者モードではプロファイルを手動で選択でき、カーネルリリースとビルドに関する警告を別々に表示します。
デバッグモード
プロファイルは、そのデバイスでアプリ自身の経路が完了するまでフィードに含まれません。そして、アプリが読み取るのはフィードです。つまり、その経路が機能するかどうかを確認するための実行では、ダウンロードするものが何もないのです。デバッグモードは、そのような場合のためのものです。上級者モードとは別のスイッチで、既定ではオフになっており、デバイス上のフォルダからペイロードを読み取ります。有効にすると、参照先のフォルダが表示され、そのフォルダの直下には次の3つのファイルがあります。
profile.json
cve-2026-43499-app.release.so
ksud
これら2つのアーティファクトはペイロードリポジトリがビルドするものであり、それらの名前が既定値です。そのリポジトリのリリースが使用する ksud-<id> という名前で運ばれるデーモンは、名前を変更するか、マニフェストで kernelsu.name(ペイロードの場合は exploit.name)として指定する必要があります。
profile.json には、デバイスから取得できないものだけが、フィード自身のキー名で格納されます。
{
"profileId": "xig07-jp-OS3.0.7.0.WNEJPKD",
"kernelsu": { "kmi": "android14-6.1", "managerPackage": "me.weishu.kernelsu" }
}
これら3つのフィールドは必須です。フィードがデバイスの照合に使用するすべてのフィールド(カーネルリリース、ビルド表示 ID、SDK、ABI、ページサイズ)は、代わりにこのデバイスから取得されます。ローカルプロファイルは何とも照合されないためです。それでも kernelRelease や buildDisplay を指定することは任意であり、デバイスに対して検証されます。これにより、複数のターゲットのフォルダを並べて置いても安全になります。
ダウンロードされたペイロードに適用されるチェックはここでは一切行われず、アプリはその旨を明示します。フォルダからの実行は、ログと概要でそのように示され、履歴エントリでは local:<folder> として記録されます。したがって、完了した実行を後でフィード実行として読み取ることはできません。
ビルド
要件:
- Android Studio JBR 21
- Android SDK 37
- Android NDK 28 以降
- CMake 3.22.1
APK には、このリポジトリ自身のソースからはビルドされないネイティブプログラムが1つ含まれているため、サブモジュール付きでクローンしてください:
git clone --recurse-submodules https://github.com/Witaqua-tools/Root-My-Device
# or, in an existing checkout
git submodule update --init payloads
$env:JAVA_HOME='C:\Program Files\Android\Android Studio\jbr'
.\gradlew.bat :app:assembleDebug
出力:
app/build/outputs/apk/debug/app-debug.apk
ブートストラップヘルパー
APK 内の lib/arm64-v8a/libcve43499root.so はライブラリではなく、ブートストラップヘルパーです。アプリが nativeLibraryDir から ProcessBuilder で実行する実行可能ファイルです。これは、ダウンロードしたペイロードをロードし、その後、ペイロードが root を獲得したらソケット経由で su を提供するものです。
これは app/src/main/cpp/CMakeLists.txt によってソースからコンパイルされ、バイナリとしてコミットされていません。ただし、ソースはここにはありません。ペイロードのスタンドアロン経路が固定パスから同じプログラムを実行するため、ペイロードリポジトリもそれをビルドする必要があり、その1つのコピーが維持されます。このリポジトリは payloads サブモジュールを通じてそれに到達します。そのサブモジュールのピン留めされたコミットが、APK がどのリビジョンからビルドされたかを正確に記録します。
つまり、意図的に1つのソースから2つのビルドが行われるということです。ペイロードリポジトリが API 35 で NDK 29 をピン留めしているのは、そのエクスプロイトペイロードが固定サイズのブロブであり、そのツールチェーンがアイデンティティの一部であるためです。ここでは CMake が minSdk でこのモジュールの ndkVersion を使用します。ヘルパーはどちらにも依存しません。どちらにせよ同じプログラムであり、アプリが同梱するコピーはここでビルドされたものです。
これに関して、構造上重要であり、うっかり元に戻してしまいがちな点が2つあります。それは、実行可能ファイル でなければならないこと(add_executable に加えて -pie を指定するため、共有ライブラリにはない PT_INTERP を持ちます)、そして jniLibs.useLegacyPackaging = true を使用して lib*.so という名前 でなければならないことです。なぜなら、そのようにして実行ビットが設定された実ファイルとして nativeLibraryDir に展開されるからです。どちらも設定箇所にコメントが付いています。
所有しているデバイス、または明示的にテストを許可されたデバイスでのみ使用してください。
クレジット
本アプリケーション
BuSung-dev による Root-My-Galaxy のフォークであり、元の Apache License 2.0 を維持しています — LICENSE を参照してください。
実行されるペイロード
本アプリケーションは、Root-My-Device-Payloads が公開するものをダウンロードして実行します。これ自体は BuSung-dev による Root-My-Galaxy-Payloads のフォークです。
ペイロードに対して帰属すべきものはこのリポジトリには何もなく、その内容もここでは繰り返されません。KernelSU — 成功した実行が読み込むもの — 各コアの上流、そのコアの派生元ソース、そしてそこでビルドされるすべてのライセンス条件は、ペイロードリポジトリの README に記載されています。そこはペイロード側のクレジットが属する場所であり、それらのアーティファクトがビルドされる場所でもあります。