
GhostLock (CVE-2026-43499) port d'exploit kernel pour le firmware Taiwan du REDMI K90 Pro Max (myron, WPMTWXM) — offsets, guide de compilation, binaire précompilé
Portage de l'exploit noyau GhostLock (CVE-2026-43499) pour le firmware global/taïwanais du
POCO F8 Ultra / REDMI K90 Pro Max (nom de code myron, Snapdragon 8 Elite Gen 5 / SM8850).
Cible : HyperOS OS3.0.6.0.WPMTWXM — noyau
6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k
Résumé en anglais ci-dessous / 下方有英文摘要。
Même téléphone, même nom de code, mais le noyau de la version internationale/taïwanaise (WPMTWXM, c'est-à-dire POCO F8 Ultra) et celui de la version continentale (WPMCNXM) ne sont pas le même binaire :
| ROM | version du noyau | date de compilation |
|---|---|---|
| Version taïwanaise 3.0.1.0.WPMTWXM | ...-ga5f232d1ead0-ab14083253-4k | 2025-09-11 |
| Version taïwanaise 3.0.6.0.WPMTWXM | ...-g5a0e85dd9db0-ab14499855-4k | 2025-11-26 |
| Version chinoise continentale 3.0.306/308.WPMCNXM | ...-g16e473de48a3-abogki462654244-4k | 2025-11-19 |
abogki*), tandis que la version taïwanaise utilise la branche d'intégration propre à Xiaomi+pgo +bolt +lto —
toute différence de code bouleverse complètement la disposition des symbolesinit_task/init_cred diffèrent de 0x10000, selinux_state diffère de 0x120c8 (décalage non fixe)Les exploits de type data-only comme GhostLock nécessitent les adresses exactes de cette compilation précise ; par conséquent, toutes les payloads calculées pour la version chinoise continentale sont totalement invalides sur la version internationale. Ce dépôt a pour but de fournir la table d'offsets manquante pour la version internationale.
offsets/myron_tw/offsets.h — cible complète de la version taïwanaise 3.0.6.0 (pour
JoinChang/ghostlock-oneplus)scripts/device_step1.sh — script de sauvegarde ABL après root + flash de l'EFI unlockghostlock compilés (arm64) se trouvent dans Releases_text comme référence —
init_task.comm="swapper", init_cred.usage=4, init_uts_ns.release identiques caractère par caractère à uname.
Des offsets fiables peuvent être obtenus sans root sur un appareil réel.task_struct 5184 octets,
cred@0x900, pi_blocked_on@0xA18, etc., conformes à STRUCT_OFFSETS_6_12 en amont.futex_wait_requeue_pi (frame 0x1c0, waiter@sp+0x80) et
core_sys_select (frame 0x1b0, stack_fds@sp+0x18) sont identiques au Xiaomi 17 (pudding) déjà vérifié comme fonctionnel → PSELECT_SHIFT=0.selinux_state.enforcing est à +0, policycap à +2 ; une écriture d'un seul octet ne corrompt pas 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=-1Après le root, les appareils en version internationale peuvent être déverrouillés via la méthode de remplacement ABL (sans quota officiel) : sauvegarder abl_a/b →
flasher l'EFI unlock → flasher via fastboot l'ABL d'usine + spoof → restaurer. L'ABL d'usine est obtenu à partir du abl.img de la ROM 3.0.1.0 version Taïwan en votre possession (ce repo ne contient pas les fichiers de firmware propriétaires Xiaomi).
scripts/device_step1.sh est la partie côté téléphone de ce processus. Ce processus n'efface pas les données utilisateur.
Ce dépôt ne couvre que WPMTWXM. Xiaomi compile le noyau séparément pour chaque branche régionale, les offsets ne peuvent pas être partagés —
mais la méthode, oui. Dans tools/ se trouvent les trois outils que nous utilisons réellement pour générer la cible de la version taïwanaise :
# 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 : extrait kallsyms, calcule tous les décalages, puis relit init_task.comm /
init_cred.usage / init_uts_ns.release pour effectuer une validation croisée — ne pas l'utiliser si elle échouecheck_btf.py : lit depuis le BTF intégré au noyau les décalages des champs task_struct/cred/selinux_state,
et les compare un par un avec STRUCT_OFFSETS_6_12check_feasibility.py : désassemble la configuration de frame de futex_wait_requeue_pi et core_sys_select,
et la compare avec des noyaux connus comme viables (nécessite pip install capstone)Les trois sont passés, votre version pourra probablement fonctionner. Vous êtes invités à envoyer une PR pour ajouter la cible de la nouvelle version régionale.
Le firmware global du POCO F8 Ultra (REDMI K90 Pro Max) embarque une version de noyau différente
de celle du firmware CN (branche, configuration et disposition PGO/BOLT différentes), de sorte que tous
les offsets GhostLock publiés par la communauté — calculés sur des noyaux CN ogki — échouent sur
les appareils globaux. Ce dépôt fournit les offsets cibles manquants pour
OS3.0.6.0.WPMTWXM (6.12.23-android16-5-g5a0e85dd9db0-ab14499855-4k),
extraits statiquement du paquet OTA officiel et validés par recoupement
(kallsyms + BTF + lectures dans l'image), ainsi qu'un binaire précompilé dans Releases.
Les dispositions des structures sont identiques à celles de la version CN ; seules les adresses des symboles diffèrent.
La disposition de la pile d'appels correspond au Xiaomi 17 (pudding) vérifié comme fonctionnel.
À utiliser uniquement sur votre propre appareil. La vulnérabilité est publique (divulgation imposée par kernelCTF) ; ce port existe pour que les propriétaires de la variante globale puissent rooter leurs propres téléphones.
僅供自有裝置的授權安全研究。Pour la recherche en sécurité autorisée sur vos propres appareils uniquement. Aucun résultat n'est garanti ; utilisation à vos propres risques.