
Kit de root com um clique para o vivo iQOO Neo9S Pro (MT6989), explorando o UAF de futex PI da CVE-2026-43499 através do transporte MCAST, com scripts e documentos de análise.
Kit de root one-click GhostLock para o vivo iQOO Neo9S Pro (V2339FA, MediaTek MT6989). Este repositório contém: patch de portabilidade do transport MCAST, script one-click, documentação completa de análise; o kit completo executável (com binários e KernelSU) está em 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) como primitiva de poisoning, cobrindo completamente o stale rt_mutex_waiter, encadeando toda a cadeia (W1→W2→W3→KernelSU).ghostlock-kit-20260913.zip em Releases e extraia.cd <diretório de extração>\ghostlock-kit
powershell -ExecutionPolicy Bypass -File .\scripts\run-at-lockscreen.ps1 -Reboot
[+] Root 成功! está concluído (não desbloqueie o celular durante a execução). Verificação:adb shell su -c id
# uid=0(root) gid=0(root) groups=0(root) context=u:r:ksu:s0
Em caso de falha, ocorre kernel panic e reinício automático; o script aguarda e tenta novamente automaticamente (taxa de sucesso ~25–30% por tentativa; na tela de bloqueio quase sempre sucesso na primeira). O root é temporário (KernelSU late-load); após reiniciar o celular é necessário executar o script novamente.
.
├── scripts/
│ ├── run-at-lockscreen.ps1 # one-click: reiniciar→aguardar tela de bloqueio→push e verificação→executar→retry automático (recomendado)
│ └── retry-if-needed.ps1 # retry genérico (sem forçar reinício)
├── src/
│ └── ghostlock-mcast.patch # alterações no código-fonte (baseline ghostlock-app @ 50d2b72)
├── docs/ # documentação de análise (relatório de exploit/análise de transport/waiter e PI walk/manual do dispositivo/registro de troubleshooting)
└── LICENSE # Apache-2.0 (herdado do upstream)
Binários e kit completo (files/ghostlock, files/ksud, files/offsets.json, APK do KernelSU) não estão no repositório git,
baixe ghostlock-kit-20260913.zip em Releases.
| Asset | Descrição | SHA-256 |
|---|---|---|
ghostlock-kit-20260913.zip | Kit completo (scripts+binários+APK+docs) | df547f6b2852a0d86582958e049ef5a44599a5a91ce0dace2162fb7d0fcab11d |
Arquivos-chave dentro do kit (MD5):
| Arquivo | MD5 |
|---|---|
files/ghostlock (programa de exploit) | e581609ed114d33efa3b8a1958f85637 |
| (userland oficial do KernelSU v3.3.0) |
FUTEX_WAIT_REQUEUE_PI, o task->pi_blocked_on permanece pendurado apontando para o rt_mutex_waiter em sua stack.setsockopt(SOL_IP, MCAST_JOIN_SOURCE_GROUP, buf, 0x108) faz do_ip_setsockopt executar
memset(0x108) + copy_from_user(0x108), e o intervalo copiado [S'−0x338, S'−0x230) cobre completamente o waiter (o waiter está no offset 0x60 do buffer);
definir buf[8]=0 faz a validação de família falhar, e a syscall retorna limpa após a cópia.sched_setattr → rt_mutex_adjust_prio_chain lê o waiter forjado → rb_erase left-only relink
forma a primitiva de escrita .Veja docs/ para detalhes (incluindo cadeia de evidências, análise de disassembly e cenas de crash).
# Baseline: ghostlock-app @ 50d2b72 (inclui 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
Conteúdo do patch: transport MCAST (do_mcast_fake_lock_route), seleção de rota, lógica de observe/pré-construção,
GHOSTLOCK_WALK_LOG (localização do walk no lado consumer), backup pstore do script root, GHOSTLOCK_SKIP_VR.
ksud e o APK neste kit vêm do release oficial v3.3.0, direitos autorais de seus autoresApenas para proprietários de dispositivos realizarem pesquisa de segurança local e root de uso próprio em seus próprios dispositivos; não use em dispositivos não autorizados ou para fins ilegais. O uso desta ferramenta pode causar instabilidade do dispositivo ou risco de dados; faça backup por conta própria e assuma as consequências.
files/ksudde059ed8ffd896129a0a4bbe338c946a |
files/offsets.json (offsets deste modelo) | a2498197161b01bdcc5dffc0614fbfbd |
*(target) := valuecred = init_cred → W3 limpa seccomp (fluxo shell ignora) → script root faz late-load do KernelSU.| Problema | Tratamento |
|---|
| Celular reinicia após falha | Normal (evento probabilístico); após reiniciar não desbloqueie, execute o script diretamente |
| Gerenciador mostra "não instalado/não funcionando" | Confirme primeiro que su -c id funciona; abra o gerenciador e atualize, não deslize para fechar/force stop |
| Root desaparece após reiniciar | Normal (late-load não persistente); execute o script novamente |
| Quero usar ReSukiSU | Não disponível neste dispositivo (trava e reinicia ao abrir o gerenciador); se necessário, configure outra versão compatível |
| Após atualização do sistema | offsets.json pode se tornar inválido, é necessário regerar/importar |