
Exploit de kernel GhostLock (CVE-2026-43499) portado para el firmware de REDMI K90 Pro Max Taiwan (myron, WPMTWXM): offsets, guía de compilación, binario precompilado
Port del exploit del kernel GhostLock (CVE-2026-43499) para el firmware global/de Taiwán del
POCO F8 Ultra / REDMI K90 Pro Max (nombre en clave myron, Snapdragon 8 Elite Gen 5 / SM8850).
Objetivo: HyperOS OS3.0.6.0.WPMTWXM — kernel
6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k
Resumen en inglés abajo / 下方有英文摘要。
El mismo teléfono, el mismo nombre en clave, pero el kernel de la versión internacional/Taiwán (WPMTWXM, es decir, POCO F8 Ultra) y el de la versión de China continental (WPMCNXM) no son el mismo binario:
| ROM | kernel release | Hora de compilación |
|---|---|---|
| Versión de Taiwán 3.0.1.0.WPMTWXM | ...-ga5f232d1ead0-ab14083253-4k | 2025-09-11 |
| Versión de Taiwán 3.0.6.0.WPMTWXM | ...-g5a0e85dd9db0-ab14499855-4k | 2025-11-26 |
| Versión de China continental 3.0.306/308.WPMCNXM | ...-g16e473de48a3-abogki462654244-4k | 2025-11-19 |
abogki*), mientras que la versión de Taiwán usa la rama de integración propia de Xiaomi+pgo +bolt +lto —
cualquier diferencia en el código desordena por completo la disposición de símbolosinit_task/init_cred difieren en 0x10000, selinux_state difiere en 0x120c8 (desplazamiento no fijo)Los exploits de solo datos como GhostLock necesitan las direcciones exactas de esa compilación, por lo que todos los payloads calculados para la versión de China continental son inválidos en la versión internacional. Este repo es precisamente para completar la tabla de offsets que le falta a la versión internacional.
offsets/myron_tw/offsets.h — objetivo completo de la versión de Taiwán 3.0.6.0 (para usar con
JoinChang/ghostlock-oneplus)scripts/device_step1.sh — script de respaldo de ABL tras obtener root + flasheo del EFI de desbloqueoghostlock ya compilado (arm64)_text como base —
init_task.comm="swapper", init_cred.usage=4, init_uts_ns.release coincide carácter por carácter con uname.
No se necesita root en un dispositivo real para obtener desplazamientos fiables.task_struct 5184 bytes,
cred@0x900, pi_blocked_on@0xA18, etc., coherente con el STRUCT_OFFSETS_6_12 de upstream.futex_wait_requeue_pi (frame 0x1c0, waiter@sp+0x80) y
core_sys_select (frame 0x1b0, stack_fds@sp+0x18) son exactamente iguales al Xiaomi 17 (pudding) ya verificado como viable → PSELECT_SHIFT=0.selinux_state.enforcing está en +0 y policycap en +2; una escritura de un solo byte no corrompe 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 u otros ajustes finosLos dispositivos de la versión internacional, tras obtener root, pueden desbloquearse mediante el método de sustitución de ABL (no requiere cupo oficial): hacer copia de seguridad de abl_a/b →
flashear el EFI de desbloqueo → con fastboot flashear el ABL de fábrica + spoof → restaurar. El ABL de fábrica se obtiene del abl.img de la ROM 3.0.1.0 de la versión de Taiwán que tengas en tu poder (este repo no incluye archivos de firmware propietarios de Xiaomi).
scripts/device_step1.sh es la parte del proceso que se ejecuta en el teléfono. Este proceso no borra los datos del usuario.
Este repo solo cubre WPMTWXM. Xiaomi compila el kernel por separado para cada rama regional, por lo que los offsets no se pueden compartir;
pero el método sí. En tools/ están las tres herramientas que realmente usamos para generar el target de la versión de Taiwán:
# 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: extrae kallsyms, calcula todos los desplazamientos y vuelve a leer init_task.comm /
init_cred.usage / init_uts_ns.release para hacer una verificación cruzada; si no pasa, no lo usescheck_btf.py: lee del BTF incrustado en el núcleo los desplazamientos de los campos de task_struct/cred/selinux_state
y los compara uno por uno con STRUCT_OFFSETS_6_12check_feasibility.py: desensambla la configuración de marcos de futex_wait_requeue_pi y core_sys_select
y la compara con núcleos de viabilidad conocida (requiere pip install capstone)Los tres pasaron, tu versión probablemente funcione. Te invitamos a enviar un PR con el target de la nueva versión de la región para incluirlo.
El firmware global del POCO F8 Ultra (REDMI K90 Pro Max) incluye una compilación del kernel diferente
a la del firmware CN (rama, configuración y diseño PGO/BOLT distintos), por lo que todos los
offsets de GhostLock publicados por la comunidad — calculados sobre kernels ogki de CN — fallan en
los dispositivos globales. Este repositorio proporciona los offsets objetivo que faltaban para
OS3.0.6.0.WPMTWXM (6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k),
extraídos estáticamente del paquete OTA oficial y validados de forma cruzada
(kallsyms + BTF + lecturas dentro de la imagen), además de un binario precompilado en Releases.
Los diseños de las estructuras son idénticos a los de la compilación CN; solo difieren las direcciones de los símbolos.
El diseño del marco de pila coincide con el del Xiaomi 17 (pudding), verificado como funcional.
Úsalo solo en tu propio dispositivo. La vulnerabilidad es pública (divulgación obligatoria por kernelCTF); este port existe para que los propietarios de la variante global puedan rootear sus propios teléfonos.
Solo para investigación de seguridad autorizada en dispositivos propios. For authorized security research on your own devices only. No se garantiza ningún resultado; úsalo bajo tu propio riesgo.