
Exploit fork do GhostLock (CVE-2026-43499) para RootMyVivo Neo — iQOO Neo 11 (PD2520, SM8750, 6.6.89). Apenas para pesquisa autorizada em dispositivos próprios.
Fork de boxiaolanya2008/CVE-2026-43499-Neo11Plus, reformulado para RootMyVivo. Removido tudo o que quebrava o telefone após o root, mantido o núcleo do exploit com timings verificados.
| Diretório | Dispositivo | Kernel | Origem dos offsets |
|---|---|---|---|
PD2520-BP2A.250605.031.A3 | iQOO Neo 11 | 6.6.89 | kallsyms+BTF do próprio boot.img, verificado em hardware |
PD2520-A-16.0.28.2 | iQOO Neo 11 | 6.6.127 | kallsyms do 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 — o mesmo binário serve para o Neo10 Pro em b57 |
PD2405-AP3A.240905.015.A1 | vivo X200 Pro | 6.6.89 | CyberMeowfia |
Novo dispositivo = novo diretório em src/targets/: target.h (offsets) + root.c (nosso final verificado, copiado como está).
| Componente | Motivo |
|---|---|
| Troca de wallpaper + kill do system_server | fonte de soft-reboots "espontâneos" e wallpapers substituídos |
| daemon io na porta 39555 | era necessário apenas para o kernelapp de depuração |
| overlay tmpfs em /apex/com.android.virt | travava o zygote no soft-reboot (tela preta) |
| Serviço de boot 10-neo11-su.sh | a fixação é feita pelo aplicativo |
| Tabelas de offsets de dispositivos alheios | agora são próprias, por diretório de alvo |
O núcleo do exploit (futex PI UAF → pselect fake lock → heap spray → pipe physrw → root) e a posture (panic_on_oops=0, kptr_restrict, envenenamento AVC) não foram alterados.
Sobre o upstream foram adicionados: safety_quiesce (aguarda loadavg < 4 antes da rota PI), cred-guard (verificação de canonicidade dos endereços antes da escrita), ciclo de retry de até 3 execuções em forks novos. Controles por ambiente: RMV_ATTEMPTS, RMV_RETRY_DELAY.
De onde vêm afinal os panics: INIT_STACK_ALL_ZERO apaga a stack e quebra o fake waiter — resolvido com quiesce+retry; alvo inválido após reclaim malsucedido — cred-guard; panic_on_oops=1 no stock — a posture desativa logo após o root, antes disso só o cuidado salva.
Windows, NDK r29:
build_ports.bat # все порты
build_ports.bat I2401-16.1.22.2 # одна цель
build-win.bat # PD2520 6.6.89
Também é possível no dispositivo via Termux — veja Makefile.
Saída: build/<target>/bin/preload.so (~140 KB). Execução: LD_PRELOAD=$PWD/preload.so /system/bin/true a partir do domínio shell.
Tudo é calculado automaticamente via P0_DATA_ALIAS_CONST a partir de P0_PHYS_OFFSET e P0_KERNEL_PHYS_LOAD. Qualcomm SM8750: 0x80000000/0xa8000000. MediaTek Dimensity 9400: 0x80000000/0x80000000. Um valor incorreto não causa panic — o slide simplesmente não vai bater.
A CVE foi corrigida em 6.1.175 / 6.6.140 / 6.12.86. Mas a compatibilidade não é determinada apenas pela versão: a posição de rt_mutex_waiter na pilha de do_futex depende da compilação com PGO/LTO. Análise detalhada em JoinChang/ghostlock-oneplus: no OPLUS 6.1, do_futex é inlined e o exploit é impossível; no vivo 6.1 — está vivo. Antes de partir para o port, verifique o frame.
Apenas para pesquisa autorizada e dispositivos próprios.