
GhostLock (CVE-2026-43499) Exploit-Fork für RootMyVivo Neo — iQOO Neo 11 (PD2520, SM8750, 6.6.89). Nur für autorisierte Forschung an eigenen Geräten.
Ein Fork von boxiaolanya2008/CVE-2026-43499-Neo11Plus, überarbeitet für RootMyVivo. Alles entfernt, was das Telefon nach dem Rooten beschädigt hat, der Exploit-Kern mit bewährten Timings bleibt erhalten.
| Verzeichnis | Gerät | Kernel | Herkunft der Offsets |
|---|---|---|---|
PD2520-BP2A.250605.031.A3 | iQOO Neo 11 | 6.6.89 | kallsyms+BTF aus eigener boot.img, auf Hardware verifiziert |
PD2520-A-16.0.28.2 | iQOO Neo 11 | 6.6.127 | kallsyms aus boot_b |
I2401-16.1.22.2 | iQOO 13 (India) | 6.6.89 | AmarnathCJD/IQOO13-Root |
PD2426-BP2A.250605.031.A3 | iQOO Neo10 Pro | 6.6.89 (gf2) | sgswzglwlx/vivo-root-build |
PD2415-BP2A.250605.031.A3 | vivo X200 | 6.6.89 (b57) | xiaohj233/ghostlock-x200-root — dasselbe Binary passt für Neo10 Pro auf b57 |
PD2405-AP3A.240905.015.A1 | vivo X200 Pro | 6.6.89 | CyberMeowfia |
Neues Gerät = neues Verzeichnis in src/targets/: target.h (Offsets) + root.c (unser bewährtes Finale, wird unverändert kopiert).
| Komponente | Grund |
|---|---|
| Hintergrundwechsel + Töten von system_server | Quelle „selbsttätiger" Soft-Reboots und ausgetauschter Hintergrundbilder |
| io-Daemon auf Port 39555 | wurde nur für die Debug-kernelapp benötigt |
| tmpfs-Overlay auf /apex/com.android.virt | ließ zygote bei Soft-Reboot hängen (schwarzer Bildschirm) |
| Boot-Service 10-neo11-su.sh | die Verankerung übernimmt die App |
| Offset-Tabellen fremder Geräte | jetzt eigene, pro Ziel ein Verzeichnis |
Der Exploit-Kern (futex PI UAF → pselect fake lock → heap spray → pipe physrw → root) und die Posture (panic_on_oops=0, kptr_restrict, AVC-Vergiftung) sind unangetastet.
Zusätzlich zu Upstream hinzugefügt: safety_quiesce (wartet auf loadavg < 4 vor dem PI-Pfad), cred-guard (Prüfung der Kanonizität von Adressen vor dem Schreiben), Retry-Schleife bis zu 3 Durchläufe in frischen Forks. Umgebungsvariablen: RMV_ATTEMPTS, RMV_RETRY_DELAY.
Woher überhaupt die Panics kommen: INIT_STACK_ALL_ZERO überschreibt den Stack und reißt den fake waiter ab — behoben durch quiesce+retry; ein Müllziel nach fehlgeschlagenem reclaim — cred-guard; panic_on_oops=1 im Stock — die Posture schaltet es direkt nach dem Rooten ab, davor hilft nur Sorgfalt.
Windows, NDK r29:
build_ports.bat # все порты
build_ports.bat I2401-16.1.22.2 # одна цель
build-win.bat # PD2520 6.6.89
Auf dem Gerät geht es auch über Termux — siehe Makefile.
Ausgabe: build/<target>/bin/preload.so (~140 KB). Start: LD_PRELOAD=$PWD/preload.so /system/bin/true aus der Shell-Domain.
Alles wird automatisch über P0_DATA_ALIAS_CONST aus P0_PHYS_OFFSET und P0_KERNEL_PHYS_LOAD berechnet. Qualcomm SM8750: 0x80000000/0xa8000000. MediaTek Dimensity 9400: 0x80000000/0x80000000. Ein falscher Wert führt nicht zu einer Panik — der Slide geht einfach nicht auf.
Die CVE ist in 6.1.175 / 6.6.140 / 6.12.86 geschlossen. Die Kompatibilität wird aber nicht nur durch die Version bestimmt: Die Position von rt_mutex_waiter auf dem Stack von do_futex hängt vom PGO/LTO-Build ab. Eine ausführliche Analyse findet sich bei JoinChang/ghostlock-oneplus: Bei OPLUS 6.1 wird do_futex inlined und der Exploit ist unmöglich, bei vivo 6.1 — lebendig. Bevor du dich an einen Port machst, prüfe den Frame.
Nur autorisierte Forschung und eigene Geräte.