
GhostLock (CVE-2026-43499) — порт эксплойта ядра для тайваньской прошивки REDMI K90 Pro Max (myron, WPMTWXM): смещения, руководство по сборке, готовый бинарный файл
GhostLock (CVE-2026-43499) — порт kernel-эксплойта для глобальной/тайваньской прошивки POCO F8 Ultra / REDMI K90 Pro Max (кодовое имя myron, Snapdragon 8 Elite Gen 5 / SM8850).
Цель: HyperOS OS3.0.6.0.WPMTWXM — ядро 6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k
English summary below / Ниже есть английское резюме.
У одной и той же модели с одним и тем же кодовым именем ядро международной/тайваньской версии (WPMTWXM, т.е. POCO F8 Ultra) и материковой версии (WPMCNXM) — это не один и тот же binary:
| ROM | kernel release | Время сборки |
|---|---|---|
| TW-версия 3.0.1.0.WPMTWXM | ...-ga5f232d1ead0-ab14083253-4k | 2025-09-11 |
| TW-версия 3.0.6.0.WPMTWXM | ...-g5a0e85dd9db0-ab14499855-4k | 2025-11-26 |
| CN-версия 3.0.306/308.WPMCNXM | ...-g16e473de48a3-abogki462654244-4k | 2025-11-19 |
abogki*), тайваньская — собственную интеграционную ветку Xiaomi+pgo +bolt +lto — любое различие в коде полностью перемешивает раскладку символовinit_task/init_cred отличаются на 0x10000, selinux_state — на 0x120c8 (смещение не фиксированное)Такой data-only эксплойт, как GhostLock, требует точных адресов именно этой сборки, поэтому все payload'ы, рассчитанные для материковой версии, на международной версии полностью не работают. Этот репозиторий восполняет недостающую таблицу смещений для международной версии.
offsets/myron_tw/offsets.h — полный target для тайваньской версии 3.0.6.0 (для JoinChang/ghostlock-oneplus)scripts/device_step1.sh — скрипт резервного копирования ABL после root и прошивки unlock EFIghostlock (arm64)_text — init_task.comm="swapper", init_cred.usage=4, init_uts_ns.release посимвольно совпадает с uname. Надёжные смещения можно получить без root на реальном устройстве.task_struct 5184 байта, cred@0x900, pi_blocked_on@0xA18 и т.д. — совпадает с upstream STRUCT_OFFSETS_6_12.futex_wait_requeue_pi (frame 0x1c0,waiter@sp+0x80) и core_sys_select (frame 0x1b0,stack_fds@sp+0x18) полностью совпадают с проверенно работающим Xiaomi 17 (pudding) → PSELECT_SHIFT=0.selinux_state.enforcing находится по смещению +0, — по +2; запись одного байта не повредит 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Международные устройства после получения root можно разблокировать методом замены ABL (официальная квота не нужна): резервное копирование abl_a/b → прошивка unlock EFI → прошивка через fastboot заводского ABL + spoof → восстановление. Заводской ABL берётся из abl.img вашей собственной тайваньской прошивки 3.0.1.0 ROM (этот репозиторий не содержит проприетарных файлов прошивки Xiaomi). scripts/device_step1.sh — часть этого процесса, выполняемая на устройстве. Данные пользователя при этом не стираются.
Глобальная прошивка POCO F8 Ultra (REDMI K90 Pro Max) поставляется с другой сборкой ядра, чем материковая прошивка (другая ветка, config и раскладка PGO/BOLT), поэтому все опубликованные сообществом смещения GhostLock, рассчитанные на ядрах CN ogki, не подходят для глобальных устройств. Этот репозиторий предоставляет недостающие целевые смещения для OS3.0.6.0.WPMTWXM (6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k), статически извлечённые из официального OTA-пакета и перекрёстно проверенные (kallsyms + BTF + чтение образов), а также готовый бинарник в Releases. Раскладка структур идентична материковой сборке; различаются только адреса символов. Раскладка стековых кадров совпадает с проверенно работающим Xiaomi 17 (pudding).
Используйте только на собственном устройстве. Уязвимость является публичной (обязательное раскрытие по правилам kernelCTF); этот порт существует, чтобы владельцы глобальных версий могли получить root на своих телефонах.
Только для авторизованных исследований безопасности на собственных устройствах. For authorized security research on your own devices only. Никакие результаты не гарантируются, использование на свой страх и риск.
policycap