
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 Neo: alles entfernt, was für unser Szenario nicht gebraucht wird, der bewährte Exploit-Kernel bleibt ohne Timing-Änderungen unverändert.
| Komponente | Grund |
|---|---|
| Hintergrundbild-Wechsel + Töten des system_server | Hauptursache für „spontane" Soft-Reboots und Hintergrundbild-Wechsel nach dem Root |
| io-Daemon (Port 39555) | wurde nur vom Debug-kernelapp gebraucht; die App arbeitet über su |
| tmpfs-Overlay auf /apex/com.android.virt/bin | konnte zygote/system_server beim Soft-Reboot aufhängen (schwarzer Bildschirm) |
| Installation von su im mount-namespace von adbd | die App ruft /data/local/tmp/su über den vollständigen Pfad auf |
| Boot-Service 10-neo11-su.sh | die Verankerung übernimmt die App: persist.adb.tcp.port + adb_keys + ksud |
| Offset-Tabellen anderer Geräte | nur PD2520-BP2A.250605.031.A3 |
| kernelapp (app/) | ersetzt durch die Funktionalität der App |
panic_on_oops=0, panic_on_warn=0 (Schutz vor Panics),
kptr_restrict/dmesg_restrict, AVC-Vergiftung (permissive ohne Bruch von policycap)/system/bin/su, sobald dieser erscheintDer Exploit legt /data/local/tmp/su ab (0755, root:root, system_file context)
und startet den Daemon mit Socket /data/local/tmp/temp_su.sock.
Die App ruft su über den vollständigen Pfad auf — /apex wird überhaupt nicht berührt.
cd exploit
PATH=/data/data/com.termux/files/usr/bin:$PATH \
make HOST_CLANG=/data/data/com.termux/files/usr/bin/clang \
NDK_ROOT=/root/android-sdk/ndk/26.1.10909125
build/PD2520-BP2A.250605.031.A3/bin/preload.so (~140 KB)
und build/embed/su_daemon_aarch64_pie (su, ~11 KB)6.6.89-android15-8-g1f71897ac249-abogki467805059-4k (Offsets aus
kallsyms+BTF dieses boot.img; Kernel-Wechsel = Neugenerierung von target.h)cd /data/local/tmp/rmv && LD_PRELOAD=$PWD/preload.so /system/bin/trueRMV_ATTEMPTS=N — Anzahl der vollständigen Versuche (Standard 3)RMV_RETRY_DELAY=N — Pause zwischen den Versuchen in Sekunden (Standard 8)NEO11_* — upstream-Regler (delay/nice/attempts) bleiben erhalten| Mechanismus | Was er tut | Wovor er schützt |
|---|
| safety_quiesce | wartet vor der PI-Route auf loadavg < 4 (bis zu 10 s) | waiter im fremden Frame → panic bei hoher Systemlast |
| cred-guard | prüft vor dem Schreiben von cred, dass die Zeiger kanonische Kernel-Adressen sind | Schreiben eines Müll-Zeigers → sofortige Beschädigung der task_struct → panic |
| retry-Schleife | bis zu 3 vollständige Durchläufe (jeder in einem frischen fork) mit 8 s Pause | Timing-Lotterie: der zweite Versuch gelingt oft, upstream gab einfach auf |
| adaptives Spin | Consumer-Threads: 200 Iterationen yield → nanosleep(0.2 ms) | 100% CPU während des gesamten Exploits |