
GhostLock (CVE-2026-43499) Kernel-Exploit-Port für die Taiwan-Firmware des REDMI K90 Pro Max (myron, WPMTWXM) — Offsets, Build-Anleitung, vorgefertigtes Binary
GhostLock (CVE-2026-43499) Kernel-Exploit-Port für die globale/Taiwan-Firmware des
POCO F8 Ultra / REDMI K90 Pro Max (Codename myron, Snapdragon 8 Elite Gen 5 / SM8850).
Ziel: HyperOS OS3.0.6.0.WPMTWXM — Kernel
6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k
English summary below / 英文摘要見下方。
Beim selben Gerät und demselben Codename sind die Kernel der internationalen/Taiwan-Version (WPMTWXM, also POCO F8 Ultra) und der China-Version (WPMCNXM) nicht dasselbe Binary:
| ROM | Kernel-Release | Kompilierzeit |
|---|---|---|
| Taiwan-Version 3.0.1.0.WPMTWXM | ...-ga5f232d1ead0-ab14083253-4k | 2025-09-11 |
| Taiwan-Version 3.0.6.0.WPMTWXM | ...-g5a0e85dd9db0-ab14499855-4k | 2025-11-26 |
| China-Version 3.0.306/308.WPMCNXM | ...-g16e473de48a3-abogki462654244-4k | 2025-11-19 |
abogki*), die Taiwanversion ist ein eigener Integrations-Branch von Xiaomi+pgo +bolt +lto kompiliert –
jede Codeabweichung bringt die gesamte Symbolanordnung durcheinanderinit_task/init_cred weichen um 0x10000 ab, selinux_state um 0x120c8 (keine feste Verschiebung)Data-only-Exploits wie GhostLock benötigen die exakten Adressen des jeweiligen Builds, daher sind alle für die China-Version berechneten Payloads in der internationalen Version vollständig ungültig. Dieses Repo ergänzt genau die Offset-Tabelle, die der internationalen Version fehlt.
offsets/myron_tw/offsets.h — vollständiges Target für die Taiwan-Version 3.0.6.0 (zur Verwendung mit
JoinChang/ghostlock-oneplus)scripts/device_step1.sh — ABL-Backup nach dem Rooten + Skript zum Flashen des unlock-EFIghostlock-Binary (arm64)_text als Basis —
init_task.comm="swapper", init_cred.usage=4, init_uts_ns.release stimmen Zeichen für Zeichen mit uname überein. Zuverlässige Offsets lassen sich ohne Root auf einem echten Gerät ermitteln.task_struct 5184 Bytes,
cred@0x900, pi_blocked_on@0xA18 usw., konsistent mit dem Upstream STRUCT_OFFSETS_6_12.futex_wait_requeue_pi (Frame 0x1c0, waiter@sp+0x80) und
core_sys_select (Frame 0x1b0, stack_fds@sp+0x18) sind identisch mit dem bereits als machbar verifizierten
Xiaomi 17 (pudding) → PSELECT_SHIFT=0.selinux_state.enforcing liegt bei +0, policycap bei +2; ein Single-Byte-Schreibvorgang beschädigt policycap nicht.git clone https://github.com/JoinChang/ghostlock-oneplus.git
cd ghostlock-oneplus
cp /path/to/this-repo/offsets/myron_tw/offsets.h src/devices/myron_tw/offsets.h
# 在 src/devices/offsets.h 的 #include 清單加一行:
# #include "myron_tw/offsets.h"
make NDK_CC=<你的 NDK>/toolchains/llvm/prebuilt/*/bin/aarch64-linux-android35-clang
adb shell uname -r
# 必須是 6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k,否則程式會拒絕執行
adb push ghostlock /data/local/tmp/e
adb shell chmod 755 /data/local/tmp/e
adb shell /data/local/tmp/e
PSELECT_SHIFT=-1 versucht werdenGeräte der internationalen Version können nach dem Rooten über die ABL-Ersetzungsmethode entsperrt werden (kein offizieller Kontingentplatz erforderlich): abl_a/b sichern →
Unlock-EFI flashen → Werks-ABL + Spoof per fastboot flashen → wiederherstellen. Das Werks-ABL wird aus der abl.img der eigenen taiwanesischen 3.0.1.0-ROM entnommen (dieses Repo enthält keine proprietären Xiaomi-Firmwaredateien).
scripts/device_step1.sh ist der geräteseitige Teil dieses Ablaufs. Dieser Ablauf löscht keine Benutzerdaten.
Dieses Repo deckt nur WPMTWXM ab. Xiaomi kompiliert den Kernel für jeden regionalen Branch separat, Offsets können nicht gemeinsam genutzt werden –
aber die Methode kann es. In tools/ befinden sich die drei Tools, die wir tatsächlich verwendet haben, um das Taiwan-Target zu erzeugen:
# 1. 從你的 OTA 包解出 boot.img(payload.bin 用 payload-dumper),然後:
python3 tools/extract_offsets.py boot.img # 產生 OFFSETS_ENTRY + 交叉驗證
python3 tools/check_btf.py boot.img # 驗證 struct 布局(決定 STRUCT_OFFSETS 能否沿用)
python3 tools/check_feasibility.py boot.img # 驗證 pselect 棧配置(決定 SHIFT)
extract_offsets.py: kallsyms extrahieren, alle Offsets berechnen und init_task.comm /
init_cred.usage / init_uts_ns.release zur Kreuzvalidierung zurücklesen – bei Nichtbestehen nicht verwendencheck_btf.py: aus dem im Kernel eingebetteten BTF die Feld-Offsets von task_struct/cred/selinux_state
auslesen und Punkt für Punkt mit STRUCT_OFFSETS_6_12 vergleichencheck_feasibility.py: die Frame-Layouts von futex_wait_requeue_pi und core_sys_select
disassemblieren und mit bekannten funktionierenden Kerneln vergleichen (erfordert pip install capstone)Alle drei sind durchgegangen, deine Version kann höchstwahrscheinlich verwendet werden. Du kannst gerne die target-Version für die neue Region per PR hinzufügen.
Die globale Firmware des POCO F8 Ultra (REDMI K90 Pro Max) enthält einen anderen Kernel-Build
als die CN-Firmware (anderer Branch, andere Konfiguration und anderes PGO/BOLT-Layout), daher schlagen alle
von der Community veröffentlichten GhostLock-Offsets — berechnet auf CN-ogki-Kerneln — auf
globalen Geräten fehl. Dieses Repo stellt die fehlenden Ziel-Offsets für
OS3.0.6.0.WPMTWXM (6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k) bereit,
statisch aus dem offiziellen OTA-Paket extrahiert und gegengeprüft
(kallsyms + BTF + In-Image-Reads), plus eine vorgebaute Binärdatei in den Releases.
Die Struct-Layouts sind identisch mit dem CN-Build; nur die Symboladressen unterscheiden sich.
Das Stack-Frame-Layout entspricht dem verifiziert funktionierenden Xiaomi 17 (pudding).
Nur auf dem eigenen Gerät verwenden. Die Schwachstelle ist öffentlich (von kernelCTF vorgeschriebene Offenlegung); dieser Port existiert, damit Besitzer der globalen Variante ihre eigenen Telefone rooten können.
僅供自有裝置的授權安全研究。Nur für autorisierte Sicherheitsforschung an eigenen Geräten. Keine Ergebnisgarantie, Nutzung auf eigenes Risiko.