
RedMi K80pro miro OS 3.0.304.0向けのデバイスバインド型CVE-2026-64560適応
Redmi K80 Pro(miro)向け CVE-2026-64560 ユーザーランドローカル権限昇格の移植プロジェクト。
🚀 こんなにたくさんのドキュメントを読みたくない?
深く掘り下げたくない、あるいはこの AI 生成の
.mdの山を読みたくないなら、 直接dyc.mdを見てください —— 人間の言葉で書かれたクイックスタート: ゼロから脱獄まで(KernelSU 含む)、叩くコマンドだけを説明し、理由は説明しません。
上流のエクスプロイトおよび Xiaomi 15(dada)への適応は
quyicheng03-boop によるもので、
本リポジトリはそれを基に K80 Pro 向けにアドレスと定数を再導出した移植成果です。
本プロジェクトは移植のみを行い、脆弱性の発見は含みません。 脆弱性の原理、エクスプロイトチェーンの設計はすべて上流の作者に帰属します。 詳細は
docs/UPSTREAM.mdとNOTICEを参照。
このリポジトリのソースコードとバイナリは、以下のただ一つのファームウェアバージョンにのみ有効です:
他のどの OTA バージョンに変えても無効になります。 カーネル内の構造体オフセット、シンボルアドレス、KASLR 範囲
はすべてこの一つの Image 向けに導出されており、一文字でも違えば動作しません。
フィンガープリントが一致しない場合、プログラムは入口で終了します:
TARGET_PROFILE_GATE_FAIL fingerprint=...
これは安全な失敗であり、カーネルには触れません。あなたのファームウェアが上表のバージョンでない場合は、
docs/05-technical.md に従って自身で再移植してください。本リポジトリの定数を
そのまま流用しないでください。
docs/04-troubleshooting.md
を参照)が、あなたが所有していない、またはデータをバックアップしていないデバイスでは実行しないでください。fastboot チャネルがありません。k80pro-miro-cve-2026-64560/
├── README.md 本ファイル
├── dyc.md クイックスタート(人間の言葉版)、初心者はまずこれを見てください
├── LICENSE 上流ライセンス
├── NOTICE 上流帰属表示
├── SHA256SUMS.txt release_build/ 内の3つの成果物のチェックサム
│
├── src/ コンパイル用ソースコード
│ ├── exploit-fanout-miro.c
│ ├── exploit-rotate-miro.c
│ ├── temp-su.c
│ ├── miro-profile.h 定数リファレンス(コンパイルには関与しない)
│ ├── miro-integration.c 統合リファレンス(コンパイルには関与しない)
│ └── exploit-*.c 上流のオリジナルファイル(ジェネレータの入力、コンパイルには関与しない)
│
├── release_build/ プリコンパイル済み成果物(そのまま使用可能)
│ ├── cve-2026-64560-fanout
│ ├── cve-2026-64560-rotate
│ └── su
│
├── docs/
│ ├── 01-build.md コンパイル方法
│ ├── 02-usage.md adb shell での使用方法
│ ├── 03-tokens.md 出力トークン早見表
│ ├── 04-troubleshooting.md トラブルシューティングとリスク説明
│ ├── 05-technical.md 移植技術説明
│ └── UPSTREAM.md 上流の出典
│
└── tools/ ビルドスクリプトと再現/診断ツール(エクスプロイトには関与しない)
├── build.sh ワンクリックコンパイル(sh tools/build.sh)
└── *.py 再現 / 診断スクリプト
docs/02-usage.md を参照。
まず成果物が完全であることを確認:
sha256sum -c SHA256SUMS.txt # Linux / macOS
certutil -hashfile <ファイル> SHA256 # Windows、1つずつ照合
docs/01-build.md を参照。
Android NDK が必要です(システムの gcc は使用不可、理由は同ドキュメントを参照)。最も手間のかからない方法は
リポジトリ同梱のスクリプトを使うことで、NDK を自動で探し、適切なツールチェーンを選び、コンパイルし、
SHA256SUMS.txt と1つずつハッシュを比較します:
sh tools/build.sh # コンパイル + 検証
sh tools/build.sh --no-check # コンパイルのみ
スクリプトはコンパイルのみを行い、デバイスに触れず、プッシュせず、exploit を実行しません。
スクリプトを使いたくない場合は、3つの clang コマンドを手入力して、
cve-2026-64560-fanout、cve-2026-64560-rotate、su を生成することもできます。
コンパイル完了後、release_build/ 内のバイト列と一致するか比較:
sha256sum build/* # SHA256SUMS.txt 内の3つの値と照合
成功の唯一の判定基準は、新しく adb shell を開き、/data/local/tmp/su を通じて uid=0 を取得できることです:
$ printf 'id\nexit\n' | adb shell -T /data/local/tmp/su
uid=0(root) gid=0(root) groups=0(root),1004(input),... context=u:r:shell:s0
context=u:r:shell:s0 に注意 —— root 権限だが shell ドメインを維持する、これは設計通りであり、
エラーではありません。
過程で確認できる重要な token(完全な表は docs/03-tokens.md を参照):
BOOTID_WRITE_PASS attempt=5 q0=... q1=... slide=... kernel_base=...
STAGE0_GATE_PASS slide=... kernel_base=...
MISC_BRIDGE_OPEN_PASS fd=... observed=...
STAGE8_CRED_STAGE_PASS task=... cred=... uid=0 context=shell
ROOT_CHILD_HOLD_PASS child=... uid=0 context=shell selinux_permissive=1
成功率は100%ではありません。 Stage0 段階の実測で約 1/5 の単発命中率であり、 そのためプログラムはデフォルトで各段階を32回リトライします。チェーン全体は確率的です。
失敗はフリーズとして現れることがあります。 電源ボタンの長押しによる強制再起動が必要です。 再起動後はカーネル状態が完全にクリアされ、やり直せます。
成功後は再起動まで2つの状態が残ります:
/data/local/tmp/su があらゆる shell 身份に対して root を開放するデーモンになるクリーンアップ方法は docs/02-usage.md の末尾を参照。
permissive は残留バグではなく、カーネルモジュール(KernelSU LKM など)をロードする前提条件です。 詳細は
docs/04-troubleshooting.mdを参照。
dada)への適応:上流リポジトリの作者miro)への移植:CHANGELOG を参照| 項目 | 値 |
|---|
| 機種 | Redmi K80 Pro(ro.product.device = miro) |
| フィンガープリント | Redmi/miro/miro:16/BP2A.250605.031.A3/OS3.0.304.0.WOMCNXM:user/release-keys |
| カーネル | 6.6.118-android15-8-gc44b714366cc-abogki519650608-4k |
| カーネルビルド時刻 | Thu Jun 4 03:48:35 UTC 2026 |
| ページサイズ | 4096(4K) |