
Kit root one-click per vivo iQOO Neo9S Pro (MT6989) che sfrutta la UAF futex PI di CVE-2026-43499 tramite trasporto MCAST, con script e documenti di analisi.
Kit di root one-click GhostLock per vivo iQOO Neo9S Pro (V2339FA, MediaTek MT6989). Questo repository contiene: patch di porting del transport MCAST, script one-click, documentazione di analisi completa; il kit completo funzionante (inclusi binari e KernelSU) è disponibile in 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) come primitiva di poisoning, coprendo completamente lo stale rt_mutex_waiter, completando l'intera catena (W1→W2→W3→KernelSU).ghostlock-kit-20260913.zip da Releases ed estrailo.cd <解压目录>\ghostlock-kit
powershell -ExecutionPolicy Bypass -File .\scripts\run-at-lockscreen.ps1 -Reboot
[+] Root 成功! l'operazione è completata (non sbloccare il telefono durante l'esecuzione). Verifica:adb shell su -c id
# uid=0(root) gid=0(root) groups=0(root) context=u:r:ksu:s0
In caso di fallimento si attiva un kernel panic con riavvio automatico; lo script attende e riprova automaticamente (tasso di successo circa 25–30% per tentativo; sulla schermata di blocco riesce quasi sempre al primo tentativo). Il root è temporaneo (KernelSU late-load); dopo il riavvio del telefono è necessario rieseguire lo 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(继承上游)
I binari e il kit completo (files/ghostlock, files/ksud, files/offsets.json, APK KernelSU) non sono inclusi nel repository git;
scarica ghostlock-kit-20260913.zip da Releases.
| Asset | Descrizione | SHA-256 |
|---|---|---|
ghostlock-kit-20260913.zip | Kit completo (script+binari+APK+documentazione) | df547f6b2852a0d86582958e049ef5a44599a5a91ce0dace2162fb7d0fcab11d |
File chiave all'interno del kit (MD5):
| File | MD5 |
|---|---|
files/ghostlock (programma di exploit) | e581609ed114d33efa3b8a1958f85637 |
| (user space ufficiale KernelSU v3.3.0) |
FUTEX_WAIT_REQUEUE_PI, task->pi_blocked_on rimane sospeso puntando al rt_mutex_waiter sul suo stack.setsockopt(SOL_IP, MCAST_JOIN_SOURCE_GROUP, buf, 0x108) fa sì che do_ip_setsockopt esegua
memset(0x108) + copy_from_user(0x108), e l'intervallo copiato [S'−0x338, S'−0x230) copre completamente il waiter (il waiter si trova all'offset 0x60 del buffer);
impostando buf[8]=0 la verifica della famiglia fallisce e la syscall ritorna in modo pulito dopo la copia.sched_setattr → rt_mutex_adjust_prio_chain legge il waiter falsificato → rb_erase con relink left-only
forma la primitiva di scrittura .Vedi docs/ per i dettagli (inclusi catena di prove, analisi del disassemblato e scena del crash).
# 基线: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
Contenuto della patch: transport MCAST (do_mcast_fake_lock_route), selezione della route, logica observe/pre-costruzione,
GHOSTLOCK_WALK_LOG (localizzazione del walk lato consumer), backup pstore dello script root, GHOSTLOCK_SKIP_VR.
ksud e APK in questo kit provengono dalla release ufficiale v3.3.0, copyright dei rispettivi autoriSolo per proprietari di dispositivi per ricerca sulla sicurezza locale su dispositivi propri e root ad uso personale; non utilizzare su dispositivi non autorizzati o per scopi illegali. L'uso di questo strumento può causare instabilità del dispositivo o rischi per i dati; esegui il backup e assumiti le relative conseguenze.
files/ksudde059ed8ffd896129a0a4bbe338c946a |
files/offsets.json (offset di questo modello) | a2498197161b01bdcc5dffc0614fbfbd |
*(target) := valuecred = init_cred → W3 pulizia seccomp (saltata nel flusso shell) → lo script root esegue il late-load di KernelSU.| Problema | Soluzione |
|---|
| Il telefono si riavvia dopo un fallimento | Normale (evento probabilistico); dopo il riavvio non sbloccare, rieseguire direttamente lo script |
| Il manager mostra "non installato/non funzionante" | Verifica prima che su -c id funzioni; apri il manager e aggiorna, non rimuoverlo/forzare l'arresto |
| Il root scompare dopo il riavvio | Normale (late-load non persistente); rieseguire lo script |
| Voler usare ReSukiSU | Non utilizzabile su questo dispositivo (aprire il manager causa blocco e riavvio); se necessario configurare un'altra versione compatibile |
| Dopo un aggiornamento di sistema | offsets.json potrebbe non essere più valido, è necessario rigenerarlo/importarlo |