
GhostLock (CVE-2026-43499) REDMI K90 Pro Max 대만 펌웨어(myron, WPMTWXM)용 커널 익스플로잇 포트 — 오프셋, 빌드 가이드, 사전 빌드 바이너리
POCO F8 Ultra / REDMI K90 Pro Max(코드명 myron, Snapdragon 8 Elite Gen 5 / SM8850)의 글로벌/대만 펌웨어용 GhostLock(CVE-2026-43499) 커널 익스플로잇 포팅입니다.
대상: HyperOS OS3.0.6.0.WPMTWXM — 커널
6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k
아래에 영어 요약 있음 / 下方有英文摘要。
같은 기기, 같은 코드명이지만 글로벌/대만 버전(WPMTWXM, 즉 POCO F8 Ultra)과 중국 버전(WPMCNXM)의 커널은 동일한 바이너리가 아닙니다:
| ROM | kernel release | 컴파일 시간 |
|---|---|---|
| 대만판 3.0.1.0.WPMTWXM | ...-ga5f232d1ead0-ab14083253-4k | 2025-09-11 |
| 대만판 3.0.6.0.WPMTWXM | ...-g5a0e85dd9db0-ab14499855-4k | 2025-11-26 |
| 중국판 3.0.306/308.WPMCNXM | ...-g16e473de48a3-abogki462654244-4k | 2025-11-19 |
abogki*),臺版是小米自己的整合分支+pgo +bolt +lto 編譯——
任何程式碼差異都會把符號配置整個洗亂init_task/init_cred 差 0x10000,selinux_state 差 0x120c8(非固定位移)GhostLock 같은 data-only exploit은 해당 빌드의 정확한 주소가 필요하므로, 중국판을 위해 계산된 모든 payload는 국제판에서 전부 무효입니다. 이 repo는 국제판에 빠져 있는 그 오프셋 표를 보완하는 것입니다.
offsets/myron_tw/offsets.h — 대만 버전 3.0.6.0의 전체 타깃(JoinChang/ghostlock-oneplus에서 사용)scripts/device_step1.sh — 루팅 후 ABL 백업 + unlock EFI 플래시 스크립트ghostlock 바이너리(arm64)가 있음_text를 기준으로 바이너리를 역으로 읽어 교차 검증 —
init_task.comm="swapper", init_cred.usage=4, init_uts_ns.release가 uname과
문자 단위로 일치. 실기기 루팅 없이도 신뢰할 수 있는 오프셋을 얻을 수 있음.task_struct 5184 bytes,
cred@0x900, pi_blocked_on@0xA18 등이 업스트림 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, policycap은 +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 從自己手上的
臺版 3.0.1.0 ROM 的 abl.img 取得(本 repo 不放小米專有韌體檔案)。
scripts/device_step1.sh 是這個流程的手機端部分。此流程不清使用者資料。
這個 repo 只覆蓋 WPMTWXM。小米每條區域分支各自編譯核心,偏移不能共用——
但方法可以。tools/ 裡是我們實際用來產生臺版 target 的三支工具:
# 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、算全部偏移,並回讀 init_task.comm /
init_cred.usage / init_uts_ns.release 做交叉驗證——不通過就不要用check_btf.py:從核心內嵌 BTF 讀出 task_struct/cred/selinux_state
欄位偏移,跟 STRUCT_OFFSETS_6_12 逐項比對check_feasibility.py:反組譯 futex_wait_requeue_pi 與 core_sys_select
的幀配置,跟已知可行的核心比對(需要 pip install capstone)세 가지 모두 통과했으니, 당신의 버전도 대부분 문제없이 작동할 것입니다. 새 지역 버전의 target을 PR로 보내 추가해 주세요.
POCO F8 Ultra(REDMI K90 Pro Max)의 글로벌 펌웨어는 CN 펌웨어와 다른 커널 빌드를 탑재하고 있습니다(브랜치, 구성, PGO/BOLT 레이아웃이 다름). 따라서 CN ogki 커널에서 계산된 커뮤니티 공개 GhostLock 오프셋은 모두 글로벌 기기에서 빗나갑니다. 이 저장소는 OS3.0.6.0.WPMTWXM(6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k)에 대해 누락된 타깃 오프셋을 제공하며, 공식 OTA 패키지에서 정적으로 추출하고 교차 검증(kallsyms + BTF + 이미지 내 읽기)했으며, Releases에 사전 빌드된 바이너리도 포함되어 있습니다.
구조체 레이아웃은 CN 빌드와 동일하며, 심볼 주소만 다릅니다.
스택 프레임 레이아웃은 검증된 Xiaomi 17(pudding)과 일치합니다.
본인 기기에서만 사용하십시오. 이 취약점은 공개되어 있으며(kernelCTF 의무 공개), 이 포트는 글로벌 변형 기기 소유자가 자신의 휴대폰을 루팅할 수 있도록 존재합니다.
자신의 기기에서만 수행하는 승인된 보안 연구용입니다. For authorized security research on your own devices only. 어떠한 결과도 보장하지 않으며, 사용에 따른 위험은 사용자 본인이 부담합니다.