
Kit de root en un clic pour vivo iQOO Neo9S Pro (MT6989) exploitant la UAF futex PI de CVE-2026-43499 via le transport MCAST, avec scripts et documents d'analyse.
Kit de root en un clic GhostLock pour le vivo iQOO Neo9S Pro (V2339FA, MediaTek MT6989). Ce dépôt contient : le patch de portage du transport MCAST, un script en un clic, la documentation d'analyse complète ; le kit complet exécutable (avec binaires et KernelSU) est disponible dans les 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) comme primitive d'empoisonnement, couvrant entièrement le rt_mutex_waiter obsolète, et débloque toute la chaîne (W1→W2→W3→KernelSU).ghostlock-kit-20260913.zip depuis les Releases et décompressez-le.cd <répertoire de décompression>\ghostlock-kit
powershell -ExecutionPolicy Bypass -File .\scripts\run-at-lockscreen.ps1 -Reboot
[+] Root 成功! apparaît, c'est terminé (ne déverrouillez pas le téléphone pendant l'exécution). Vérification :adb shell su -c id
# uid=0(root) gid=0(root) groups=0(root) context=u:r:ksu:s0
Un échec déclenche un panic du noyau et un redémarrage automatique ; le script attend et réessaie automatiquement (taux de réussite d'environ 25–30 %/tentative ; au moment de l'écran de verrouillage, réussite presque à coup sûr). Le root est temporaire (late-load KernelSU), il faut relancer le script après un redémarrage du téléphone.
.
├── scripts/
│ ├── run-at-lockscreen.ps1 # Tout-en-un : redémarrage→attente écran de verrouillage→push et vérification→exécution→nouvelle tentative automatique (recommandé)
│ └── retry-if-needed.ps1 # Nouvelle tentative générique (sans redémarrage forcé)
├── src/
│ └── ghostlock-mcast.patch # Modifications du code source (base ghostlock-app @ 50d2b72)
├── docs/ # Documentation d'analyse (rapport d'exploitation/analyse du transport/waiter et PI walk/manuel de l'appareil/journal de dépannage)
└── LICENSE # Apache-2.0 (hérité de l'amont)
Les binaires et le kit complet (files/ghostlock, files/ksud, files/offsets.json, APK KernelSU) ne sont pas placés dans le dépôt git,
veuillez télécharger ghostlock-kit-20260913.zip depuis les Releases.
| Ressource | Description | SHA-256 |
|---|---|---|
ghostlock-kit-20260913.zip | Kit complet (scripts+binaires+APK+documentation) | df547f6b2852a0d86582958e049ef5a44599a5a91ce0dace2162fb7d0fcab11d |
Fichiers clés du kit (MD5) :
| Fichier | MD5 |
|---|---|
files/ghostlock (programme d'exploitation) | e581609ed114d33efa3b8a1958f85637 |
FUTEX_WAIT_REQUEUE_PI, task->pi_blocked_on pointe toujours de manière pendante vers le rt_mutex_waiter situé sur sa pile.setsockopt(SOL_IP, MCAST_JOIN_SOURCE_GROUP, buf, 0x108) fait exécuter à do_ip_setsockopt
memset(0x108) + copy_from_user(0x108), la plage copiée [S'−0x338, S'−0x230) couvre entièrement ce waiter (le waiter se situe à l'offset 0x60 du tampon) ;
mettre buf[8]=0 fait échouer la vérification de famille, le syscall retourne proprement après la copie.sched_setattr → rt_mutex_adjust_prio_chain lit le waiter falsifié → rb_erase left-only relink
forme la primitive d'écriture .Voir docs/ pour les détails (chaîne de preuves, analyse de désassemblage et scènes de crash).
# Base : ghostlock-app @ 50d2b72 (avec 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
Contenu du patch : transport MCAST (do_mcast_fake_lock_route), sélection de route, logique observe/pré-construction,
GHOSTLOCK_WALK_LOG (localisation du walk côté consumer), sauvegarde pstore du script root, GHOSTLOCK_SKIP_VR.
ksud et l'APK de ce kit proviennent de la version officielle v3.3.0, les droits d'auteur appartiennent à leurs auteursDestiné uniquement aux propriétaires d'appareils pour la recherche locale en sécurité et le root à usage personnel sur leurs propres appareils ; ne l'utilisez pas sur des appareils non autorisés ou à des fins illégales. L'utilisation de cet outil peut entraîner une instabilité de l'appareil ou des risques pour les données, veuillez sauvegarder par vous-même et assumer les conséquences correspondantes.
files/ksud (espace utilisateur officiel KernelSU v3.3.0) |
de059ed8ffd896129a0a4bbe338c946a |
files/offsets.json (offsets de ce modèle) | a2498197161b01bdcc5dffc0614fbfbd |
*(target) := valuecred = init_cred → W3 nettoie seccomp (étape ignorée dans le flux shell) → le script root fait un late-load de KernelSU.| Problème | Traitement |
|---|
| Le téléphone redémarre après un échec | Normal (événement probabiliste) ; après le redémarrage, ne déverrouillez pas, relancez directement le script |
| Le gestionnaire affiche « non installé/ne fonctionne pas » | Vérifiez d'abord que su -c id fonctionne ; ouvrez le gestionnaire et rafraîchissez, ne le balayez/forcez pas l'arrêt |
| Le root disparaît après redémarrage | Normal (late-load non persistant) ; relancez le script |
| Vouloir utiliser ReSukiSU | Non utilisable sur cet appareil (blocage et redémarrage dès l'ouverture du gestionnaire), configurez une autre version compatible si nécessaire |
| Après une mise à jour système | offsets.json peut devenir invalide, il faut le régénérer/l'importer |