
GhostLock (CVE-2026-43499) port dell'exploit del kernel per il firmware Taiwan di REDMI K90 Pro Max (myron, WPMTWXM) — offset, guida alla compilazione, binario precompilato
Port dell'exploit del kernel GhostLock (CVE-2026-43499) per il firmware global/Taiwan del
POCO F8 Ultra / REDMI K90 Pro Max (nome in codice myron, Snapdragon 8 Elite Gen 5 / SM8850).
Target: HyperOS OS3.0.6.0.WPMTWXM — kernel
6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k
Riepilogo in inglese qui sotto / 下方有英文摘要。
Stesso telefono, stesso nome in codice, ma il kernel della versione internazionale/Taiwan (WPMTWXM, ovvero POCO F8 Ultra) e quello della versione cinese (WPMCNXM) non sono lo stesso binario:
| ROM | kernel release | Data di compilazione |
|---|---|---|
| Versione taiwanese 3.0.1.0.WPMTWXM | ...-ga5f232d1ead0-ab14083253-4k | 2025-09-11 |
| Versione taiwanese 3.0.6.0.WPMTWXM | ...-g5a0e85dd9db0-ab14499855-4k | 2025-11-26 |
| Versione cinese continentale 3.0.306/308.WPMCNXM | ...-g16e473de48a3-abogki462654244-4k | 2025-11-19 |
abogki*), mentre la versione taiwanese è un ramo integrato proprietario di Xiaomi+pgo +bolt +lto —
qualsiasi differenza nel codice sconvolge completamente la disposizione dei simboliinit_task/init_cred differiscono di 0x10000, selinux_state differisce di 0x120c8 (offset non fisso)Exploit data-only come GhostLock richiedono gli indirizzi esatti di quella specifica compilazione, quindi tutti i payload calcolati per la versione cinese continentale sono completamente inefficaci sulle versioni internazionali. Questo repo serve proprio a fornire la tabella degli offset mancante per le versioni internazionali.
offsets/myron_tw/offsets.h — target completo per la versione TW 3.0.6.0 (per l'uso con
JoinChang/ghostlock-oneplus)scripts/device_step1.sh — script di backup ABL + flash dell'EFI di sblocco dopo il rootghostlock già compilato (arm64)_text come base —
init_task.comm="swapper", init_cred.usage=4, init_uts_ns.release coincidono carattere per carattere con uname.
Non serve il root sul dispositivo reale per ottenere offset affidabili.task_struct 5184 byte,
cred@0x900, pi_blocked_on@0xA18 ecc., coerenti con STRUCT_OFFSETS_6_12 upstream.futex_wait_requeue_pi (frame 0x1c0, waiter@sp+0x80) e
core_sys_select (frame 0x1b0, stack_fds@sp+0x18) sono identici a quelli dello
Xiaomi 17 (pudding) già verificato come funzionante → PSELECT_SHIFT=0.selinux_state.enforcing è a +0, policycap a +2, una scrittura di un singolo byte non danneggia policycap.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 o altre regolazioni finiI dispositivi della versione internazionale, dopo il root, possono essere sbloccati tramite il metodo di sostituzione ABL (senza bisogno di quote ufficiali): backup di abl_a/b →
flash dell'EFI di unlock → flash tramite fastboot dell'ABL di fabbrica + spoof → ripristino. L'ABL di fabbrica si ottiene dal abl.img della propria ROM versione Taiwan 3.0.1.0 in proprio possesso (questo repo non include file firmware proprietari di Xiaomi).
scripts/device_step1.sh è la parte lato dispositivo di questo processo. Questa procedura non cancella i dati dell'utente.
Questo repo copre solo WPMTWXM. Xiaomi compila il kernel separatamente per ogni ramo regionale, quindi gli offset non possono essere condivisi—
ma il metodo sì. In tools/ ci sono i tre strumenti che usiamo effettivamente per generare il target della versione taiwanese:
# 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: estrae kallsyms, calcola tutti gli offset e rilegge init_task.comm /
init_cred.usage / init_uts_ns.release per una verifica incrociata — se non passa, non usarlocheck_btf.py: legge dal BTF incorporato nel kernel gli offset dei campi di task_struct/cred/selinux_state
e li confronta voce per voce con STRUCT_OFFSETS_6_12check_feasibility.py: disassembla la configurazione dei frame di futex_wait_requeue_pi e core_sys_select
e la confronta con kernel noti come funzionanti (richiede pip install capstone)Tutti e tre sono passati, molto probabilmente la tua versione funzionerà. Sei invitato a inviare una PR per aggiungere il target della nuova versione regionale.
Il firmware globale del POCO F8 Ultra (REDMI K90 Pro Max) distribuisce una build del kernel diversa
rispetto al firmware CN (branch, config e layout PGO/BOLT differenti), quindi tutti gli offset GhostLock
pubblicati dalla community — calcolati sui kernel ogki CN — non corrispondono sui
dispositivi globali. Questo repository fornisce gli offset di destinazione mancanti per
OS3.0.6.0.WPMTWXM (6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k),
estratti staticamente dal pacchetto OTA ufficiale e convalidati in modo incrociato
(kallsyms + BTF + letture in-image), più un binario precompilato nelle Releases.
I layout delle strutture sono identici alla build CN; differiscono solo gli indirizzi dei simboli.
Il layout dello stack frame corrisponde a quello dello Xiaomi 17 (pudding) verificato funzionante.
Da usare solo sul proprio dispositivo. La vulnerabilità è pubblica (divulgazione imposta da kernelCTF); questo port esiste affinché i possessori della variante globale possano effettuare il root sui propri telefoni.
Solo per ricerca di sicurezza autorizzata sui propri dispositivi. For authorized security research on your own devices only. Nessun risultato è garantito; l'uso è a proprio rischio.