
GhostLock (CVE-2026-43499) port do exploit de kernel para o firmware taiwanês do REDMI K90 Pro Max (myron, WPMTWXM) — offsets, guia de compilação, binário pré-compilado
Port do exploit de kernel GhostLock (CVE-2026-43499) para o firmware global/Taiwan do
POCO F8 Ultra / REDMI K90 Pro Max (codename myron, Snapdragon 8 Elite Gen 5 / SM8850).
Alvo: HyperOS OS3.0.6.0.WPMTWXM — kernel
6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k
Resumo em inglês abaixo / 下方有英文摘要。
Mesmo celular, mesmo codename, mas o kernel da versão internacional/Taiwan (WPMTWXM, ou seja, POCO F8 Ultra) e da versão da China continental (WPMCNXM) não é o mesmo binário:
| ROM | kernel release | Horário de compilação |
|---|---|---|
| Versão de Taiwan 3.0.1.0.WPMTWXM | ...-ga5f232d1ead0-ab14083253-4k | 2025-09-11 |
| Versão de Taiwan 3.0.6.0.WPMTWXM | ...-g5a0e85dd9db0-ab14499855-4k | 2025-11-26 |
| Versão da China continental 3.0.306/308.WPMCNXM | ...-g16e473de48a3-abogki462654244-4k | 2025-11-19 |
abogki*); a versão de Taiwan (臺版) usa o branch de integração próprio da Xiaomi+pgo +bolt +lto —
qualquer diferença de código embaralha completamente o layout de símbolosinit_task/init_cred diferem em 0x10000, selinux_state difere em 0x120c8 (deslocamento não fixo)Exploits data-only como o GhostLock exigem os endereços exatos dessa compilação, portanto todos os payloads calculados para a versão da China continental são totalmente inválidos nas versões internacionais. Este repositório é justamente para suprir a tabela de offsets que falta nas versões internacionais.
offsets/myron_tw/offsets.h — target completo da versão TW 3.0.6.0 (para uso com
JoinChang/ghostlock-oneplus)scripts/device_step1.sh — script de backup da ABL após root + gravação do unlock EFIghostlock já compilado (arm64)_text —
init_task.comm="swapper", init_cred.usage=4, init_uts_ns.release idêntico ao uname
caractere por caractere. É possível obter offsets confiáveis sem root no dispositivo real.task_struct 5184 bytes,
cred@0x900, pi_blocked_on@0xA18 etc., consistente com o STRUCT_OFFSETS_6_12 upstream.futex_wait_requeue_pi (frame 0x1c0, waiter@sp+0x80) e
core_sys_select (frame 0x1b0, stack_fds@sp+0x18) são idênticos ao Xiaomi 17 (pudding) já
verificados como viáveis → PSELECT_SHIFT=0.selinux_state.enforcing está em +0, policycap em +2; uma escrita de byte único não corrompe o 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 從自己手上的
臺版 3.0.1.0 ROM 的 abl.img 取得(本 repo 不放小米專有韌體檔案)。
scripts/device_step1.sh 是這個流程的手機端部分。此流程不清使用者資料。
Este repo cobre apenas WPMTWXM. A Xiaomi compila o kernel separadamente para cada branch regional, e os offsets não podem ser compartilhados —
mas o método pode. Em tools/ estão as três ferramentas que realmente usamos para gerar o target da versão de Taiwan:
# 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: extrai kallsyms, calcula todos os offsets e relê init_task.comm /
init_cred.usage / init_uts_ns.release para fazer verificação cruzada — se não passar, não usecheck_btf.py: lê do BTF embutido no kernel os offsets dos campos de task_struct/cred/selinux_state
e compara item por item com STRUCT_OFFSETS_6_12check_feasibility.py: desmonta a alocação de frame de futex_wait_requeue_pi e core_sys_select
e compara com kernels sabidamente viáveis (requer pip install capstone)As três passaram, a tua versão provavelmente funciona. Sê bem-vindo a enviar um PR com o target da nova versão da região para o adicionar.
O firmware global do POCO F8 Ultra (REDMI K90 Pro Max) traz um build de kernel diferente
do firmware CN (branch, config e layout PGO/BOLT diferentes), portanto todos os
offsets do GhostLock publicados pela comunidade — calculados em kernels ogki CN — não se aplicam
em dispositivos globais. Este repositório fornece os offsets de destino que faltavam para
OS3.0.6.0.WPMTWXM (6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k),
extraídos estaticamente do pacote OTA oficial e validados de forma cruzada
(kallsyms + BTF + leituras na imagem), além de um binário pré-compilado em Releases.
Os layouts das structs são idênticos ao build CN; apenas os endereços dos símbolos diferem.
O layout do stack frame corresponde ao Xiaomi 17 (pudding) verificado como funcional.
Use apenas no seu próprio dispositivo. A vulnerabilidade é pública (divulgação exigida pelo kernelCTF); este port existe para que proprietários da variante global possam fazer root nos próprios telefones.
Apenas para pesquisa de segurança autorizada em dispositivos próprios. For authorized security research on your own devices only. Nenhum resultado é garantido; use por sua conta e risco.