
Gerätegebundene CVE-2026-64560-Anpassung für RedMi K80pro miro OS 3.0.304.0
CVE-2026-64560 User-Space-Local-Privilege-Escalation-Portierungsprojekt für das Redmi K80 Pro (miro).
🚀 Keine Lust auf so viel Dokumentation?
Wenn du dich nicht tief einarbeiten willst oder diesen Haufen KI-generierter
.md-Dateien nicht lesen möchtest, dann schau dir direktdyc.mdan —— eine schnell verständliche Anleitung in Klartext: von Null bis zum Jailbreak (inklusive KernelSU), es wird nur erklärt, welche Befehle einzugeben sind, nicht warum.
Der Upstream-Exploit und die Xiaomi 15 (dada)-Anpassung stammen von
quyicheng03-boop,
dieses Repository ist das Ergebnis einer Portierung, bei der auf dieser Basis die Adressen und Konstanten für das K80 Pro neu hergeleitet wurden.
Dieses Projekt macht nur die Portierung, es enthält keine Schwachstellenentdeckung. Das Schwachstellenprinzip und das Design der Exploit-Kette stammen vollständig vom Upstream-Autor. Siehe
docs/UPSTREAM.mdundNOTICE.
Der Quellcode und die Binärdateien in diesem Repository sind nur für genau diese eine Firmware-Version gültig:
Jede andere OTA-Version führt zum Scheitern. Die Struktur-Offsets, Symboladressen und KASLR-Bereiche im Kernel
wurden alle für genau dieses eine Image hergeleitet, schon ein abweichendes Zeichen lässt es nicht laufen.
Bei nicht übereinstimmendem Fingerprint beendet sich das Programm an der Eingangsschwelle:
TARGET_PROFILE_GATE_FAIL fingerprint=...
Dies ist ein sicheres Scheitern, der Kernel wird nicht berührt. Wenn deine Firmware nicht die in der obigen Tabelle aufgeführte Version ist, portiere bitte gemäß
docs/05-technical.md selbst neu, übernimm nicht direkt
die Konstanten dieses Repositories.
docs/04-troubleshooting.md),
aber führe ihn nicht auf Geräten aus, die dir nicht gehören oder deren Daten nicht gesichert sind.fastboot-Kanal.k80pro-miro-cve-2026-64560/
├── README.md Diese Datei
├── dyc.md Schnellstart (Klartext-Version), Einsteiger lesen zuerst diese
├── LICENSE Upstream-Lizenz
├── NOTICE Upstream-Zuordnungserklärung
├── SHA256SUMS.txt Prüfsummen der drei Artefakte in release_build/
│
├── src/ Quellcode zum Kompilieren
│ ├── exploit-fanout-miro.c
│ ├── exploit-rotate-miro.c
│ ├── temp-su.c
│ ├── miro-profile.h Konstantenreferenz (nicht am Kompilieren beteiligt)
│ ├── miro-integration.c Integrationsreferenz (nicht am Kompilieren beteiligt)
│ └── exploit-*.c Upstream-Originaldateien (Eingabe des Generators, nicht am Kompilieren beteiligt)
│
├── release_build/ Vorkompilierte Artefakte (direkt verwendbar)
│ ├── cve-2026-64560-fanout
│ ├── cve-2026-64560-rotate
│ └── su
│
├── docs/
│ ├── 01-build.md Wie man kompiliert
│ ├── 02-usage.md Wie man es in der adb shell verwendet
│ ├── 03-tokens.md Schnellreferenztabelle der Ausgabe-Token
│ ├── 04-troubleshooting.md Fehlerbehebung und Risikoerläuterung
│ ├── 05-technical.md Technische Erläuterung der Portierung
│ └── UPSTREAM.md Upstream-Quelle
│
└── tools/ Build-Skripte und Reproduktions-/Diagnosewerkzeuge (nicht am Exploit beteiligt)
├── build.sh Ein-Klick-Kompilierung (sh tools/build.sh)
└── *.py Reproduktions-/Diagnoseskripte
Siehe docs/02-usage.md.
Zuerst die Vollständigkeit der Artefakte prüfen:
sha256sum -c SHA256SUMS.txt # Linux / macOS
certutil -hashfile <Datei> SHA256 # Windows, einzeln abgleichen
Siehe docs/01-build.md.
Erfordert das Android NDK (das System-gcc kann nicht verwendet werden, Grund siehe dieses Dokument). Der einfachste Weg ist
das mitgelieferte Skript des Repositories, es findet selbst das NDK, wählt die richtige Toolchain, kompiliert und vergleicht
die Hashes einzeln mit SHA256SUMS.txt:
sh tools/build.sh # Kompilieren + Prüfen
sh tools/build.sh --no-check # Nur kompilieren
Das Skript kompiliert nur, es berührt kein Gerät, pusht nichts und führt keinen Exploit aus.
Wenn du das Skript nicht verwenden möchtest, kannst du auch die drei clang-Befehle manuell eingeben und
cve-2026-64560-fanout, cve-2026-64560-rotate, su erzeugen.
Nach dem Kompilieren vergleichen, ob es byteweise mit release_build/ übereinstimmt:
sha256sum build/* # Mit den drei Werten in SHA256SUMS.txt abgleichen
Das einzige Erfolgskriterium ist, dass eine neu geöffnete adb shell über /data/local/tmp/su uid=0 erlangen kann:
$ 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
Beachte context=u:r:shell:s0 —— root-Identität, aber in der shell-Domain verbleibend, das ist so gewollt,
kein Fehler.
Während des Ablaufs erscheinen die entscheidenden Token (vollständige Tabelle siehe 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
Die Erfolgsrate ist nicht 100 %. In der Stage0-Phase liegt die gemessene Einzeltrefferrate bei etwa 1/5, daher wiederholt das Programm standardmäßig jede Phase 32-mal. Die gesamte Kette ist probabilistisch.
Ein Fehlschlag kann sich als Absturz äußern. Ein langes Drücken der Power-Taste zum erzwungenen Neustart ist nötig. Nach dem Neustart ist der Kernel-Zustand vollständig geleert, und man kann von vorn beginnen.
Nach einem Erfolg bleiben zwei Zustände bestehen, bis zum Neustart:
/data/local/tmp/su wird zu einem Daemon, der jeder shell-Identität root-Zugriff gewährtDie Bereinigungsmethode siehe am Ende von docs/02-usage.md.
permissive ist kein zurückgebliebener Bug, sondern die Voraussetzung für das Laden von Kernelmodulen (KernelSU LKM usw.). Details siehe
docs/04-troubleshooting.md.
dada)-Anpassung: Autor des Upstream-Repositoriesmiro)-Portierung: siehe CHANGELOG| Element | Wert |
|---|
| Modell | Redmi K80 Pro (ro.product.device = miro) |
| Fingerprint | Redmi/miro/miro:16/BP2A.250605.031.A3/OS3.0.304.0.WOMCNXM:user/release-keys |
| Kernel | 6.6.118-android15-8-gc44b714366cc-abogki519650608-4k |
| Kernel-Build-Zeit | Thu Jun 4 03:48:35 UTC 2026 |
| Seitengröße | 4096 (4K) |