
Kit de root de un solo clic para vivo iQOO Neo9S Pro (MT6989) que explota el UAF de futex PI de CVE-2026-43499 mediante el transporte MCAST, con scripts y documentos de análisis.
Kit de root en un clic GhostLock para el vivo iQOO Neo9S Pro (V2339FA, MediaTek MT6989). Este repositorio contiene: parche de portabilidad del transporte MCAST, script de un clic, documentación de análisis completa; el kit completo ejecutable (con binarios y KernelSU) está en Releases.
Device: vivo iQOO Neo9S Pro (V2339FA / PD2339, MT6989) Firmware: PD2339_A_16.2.12.1.W10.V000L1 (Android 16) Kernel: 6.1.145-android14-11-maybe-dirty Vulnerability: CVE-2026-43499 (futex PI requeue UAF) For device owners / security research only. Use on your own device.
setsockopt(SOL_IP, MCAST_JOIN_SOURCE_GROUP, buf, 0x108) como primitiva de envenenamiento, cubriendo completamente el rt_mutex_waiter obsoleto y completando toda la cadena (W1→W2→W3→KernelSU).ghostlock-kit-20260913.zip desde Releases y descomprímelo.cd <解压目录>\ghostlock-kit
powershell -ExecutionPolicy Bypass -File .\scripts\run-at-lockscreen.ps1 -Reboot
[+] Root 成功! se habrá completado (no desbloquees el teléfono durante la ejecución). Verificación:adb shell su -c id
# uid=0(root) gid=0(root) groups=0(root) context=u:r:ksu:s0
Un fallo provoca un panic del kernel y reinicio automático; el script esperará y reintentará automáticamente (tasa de éxito ~25–30 % por intento; en el momento de la pantalla de bloqueo casi siempre al primer intento). El root es temporal (KernelSU late-load); tras reiniciar el teléfono hay que volver a ejecutar el script.
.
├── scripts/
│ ├── run-at-lockscreen.ps1 # 一键:重启→锁屏等待→推送校验→运行→自动重试(推荐)
│ └── retry-if-needed.ps1 # 通用重试(不强制重启)
├── src/
│ └── ghostlock-mcast.patch # 源码改动(基线 ghostlock-app @ 50d2b72)
├── docs/ # 分析文档(利用报告/transport 分析/waiter 与 PI walk/设备手册/排查记录)
└── LICENSE # Apache-2.0(继承上游)
Los binarios y el kit completo (files/ghostlock, files/ksud, files/offsets.json, APK de KernelSU) no se incluyen en el repositorio git;
descarga ghostlock-kit-20260913.zip desde Releases.
| Activo | Descripción | SHA-256 |
|---|---|---|
ghostlock-kit-20260913.zip | Kit completo (scripts+binarios+APK+documentación) | df547f6b2852a0d86582958e049ef5a44599a5a91ce0dace2162fb7d0fcab11d |
Archivos clave dentro del kit (MD5):
| Archivo | MD5 |
|---|---|
files/ghostlock (programa de explotación) | e581609ed114d33efa3b8a1958f85637 |
FUTEX_WAIT_REQUEUE_PI, task->pi_blocked_on sigue apuntando colgante a su rt_mutex_waiter en la pila.setsockopt(SOL_IP, MCAST_JOIN_SOURCE_GROUP, buf, 0x108) hace que do_ip_setsockopt ejecute
memset(0x108) + copy_from_user(0x108), y el rango copiado [S'−0x338, S'−0x230) cubre completamente dicho waiter (el waiter está en el offset 0x60 del búfer);
poner buf[8]=0 hace fallar la validación de familia y la syscall retorna limpiamente tras la copia.sched_setattr → rt_mutex_adjust_prio_chain lee el waiter falsificado → rb_erase con relink left-only
forma la primitiva de escritura .Ver detalles en docs/ (incluye cadena de evidencia, análisis de desensamblado y escenas de colapso).
# 基线:ghostlock-app @ 50d2b72(含 PR#127)
git clone https://github.com/YuKongA/ghostlock-app.git
cd ghostlock-app && git checkout 50d2b72
git apply /path/to/src/ghostlock-mcast.patch
make NDK_ROOT=<your-ndk> ghostlock
Contenido del parche: transporte MCAST (do_mcast_fake_lock_route), selección de ruta, lógica observe/preconstrucción,
GHOSTLOCK_WALK_LOG (localización del walk en el lado consumer), copia de seguridad pstore del script de root, GHOSTLOCK_SKIP_VR.
ksud y el APK de este kit provienen de la versión oficial v3.3.0, los derechos de autor pertenecen a sus autoresSolo para que los propietarios de dispositivos realicen investigación de seguridad local y root de uso propio en sus propios dispositivos; no lo uses en dispositivos no autorizados ni para fines ilegales. El uso de esta herramienta puede causar inestabilidad del dispositivo o riesgos para los datos; haz tu propia copia de seguridad y asume las consecuencias correspondientes.
files/ksud (espacio de usuario oficial de KernelSU v3.3.0) |
de059ed8ffd896129a0a4bbe338c946a |
files/offsets.json (offsets de este modelo) | a2498197161b01bdcc5dffc0614fbfbd |
*(target) := valuecred = init_cred → W3 limpia seccomp (el flujo de shell lo omite) → el script de root hace late-load de KernelSU.| Problema | Solución |
|---|
| El teléfono se reinicia tras un fallo | Normal (evento probabilístico); tras reiniciar no desbloquees, ejecuta el script directamente |
| El gestor muestra "no instalado/no funciona" | Confirma primero que su -c id funciona; abre el gestor y actualiza, no lo deslices/forces la detención |
| El root desaparece tras reiniciar | Normal (late-load no persistente); vuelve a ejecutar el script |
| Quiero usar ReSukiSU | No disponible en este dispositivo (al abrir el gestor se bloquea y reinicia); si lo necesitas, configura otra versión compatible |
| Tras una actualización del sistema | offsets.json puede quedar inválido; hay que regenerarlo/importarlo |