
CVE-2026-43499を使用してGalaxyをroot化する
中文: README_ZH.md
これは別リポジトリです。このルートは adb shell または Shizuku を通じて取得した Android シェル権限を必要とするためです。元の YuKongA/ghostlock-app はシェル権限を使用せず、異なる実行ルートをたどります。その要件とコードパスが本プロジェクトと互換性があると仮定すべきではありません。
| デバイス | カーネル |
|---|---|
| Samsung Galaxy Z Fold6 (SM-F9560 / q6q) | 6.1.145-android14-11-3254009-abF9560ZCS4DZG3 |
起動時に uname -r を介してカーネルがオフセットテーブルと照合されます。未対応のカーネルは即座に拒否されます。
APK パスの場合、ワイヤレスデバッグを通じて Shizuku を起動し、GhostLock に権限を付与して Run をタップします。Shizuku は Android シェルユーザーとしてペイロードを起動します。APK 自体はエクスプロイトの実行コンテキストではありません。
直接コマンドラインパスは、Shizuku を必要とせずに同じ検証済みシェルペイロードを実行します:
make ghostlock helper
adb push ghostlock /data/local/tmp/ghostlock
adb push ghostlock-helper /data/local/tmp/ghostlock-helper
adb push app/src/main/assets/ksud-zfold6-F9560ZCS4DZG3-samsung-main-no-patch-text-kdp /data/local/tmp/ksud-zfold6-F9560ZCS4DZG3-samsung-main-no-patch-text-kdp
adb shell chmod 755 /data/local/tmp/ghostlock
adb shell chmod 755 /data/local/tmp/ghostlock-helper
adb shell chmod 755 /data/local/tmp/ksud-zfold6-F9560ZCS4DZG3-samsung-main-no-patch-text-kdp
adb shell /data/local/tmp/ghostlock
ヘルパーは UMH root および KernelSU late-load ステージで必要です。
一部の Samsung/Exynos 6.1 カーネルでは、汎用 KernelSU モジュールが ksud late-load 中に EL2 パニックを引き起こす可能性があります。これはモジュールがライブテキストパッチを試みるためです。影響を受けるターゲットでは、正確なファームウェアリリース用のモジュールをビルドし、ターゲットツリーの no-patch-text オプションを有効にしてください:
CONFIG_KSU_SAMSUNG_NO_PATCH_TEXT=y
ターゲット固有の kernelsu.ko と ksud をペアにし、6.1 KMI だけでなくデバイスの完全な uname -r に一致させてください。late-load 中の再起動は、必ずしも ksud ローダーではなく、モジュールの初期化に起因する可能性があります。これは Samsung/Exynos 固有の予防措置です。現在の SM-F9560 ターゲットは Snapdragon であり、別途検証する必要があります。ターゲット固有のビルド例については Root-My-Galaxy-Payloads を参照してください。
Qualcomm デバイスでは、tools/extract_target.py が boot.img と xbl_config.img からオフセットを解析します。Python 3 と kallsyms ソース (--kallsyms ファイルまたは --kallsyms-finder) が必要です。--llvm-objdump を渡す (または PATH/NDK に llvm-objdump がある) と、さらにカーネルを逆アセンブルして pselect_waiter_shift と off_slide_loggers_0_1 を自動導出します:
python tools/extract_target.py `
boot.img `
--xbl-config xbl_config.img `
--format c `
--out offsets.h
core_sys_select はユーザー fd_set データの 3 x FDS_BYTES(nfds) のみをカーネルスタックにコピーします (nfds=320 の場合 qword 0..14)。futex waiter はその制御可能な領域内に収まる必要があります: waiter 開始ワード + 11 (lock フィールド) <= 14、つまり導出されたシフト (qword 単位での fd_set からの waiter オフセット) が <= 3 でなければならず、そうでない場合 task/lock がカーネルゼロ埋めテールに落ち、このルートは機能しません。レイアウトが実現不可能な場合、スクリプトは明確なエラーで失敗します。
ペイロード研究とサポート成果物の詳細については、Root-My-Galaxy-Payloads を参照してください。プルリクエストを歓迎します。
以下のプロジェクトに基づいており、Apache License 2.0 の下でライセンスされています (LICENSE を参照):