Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
vivo_iqoo_neo_9_root_research_on_CVE-2025-21479 — iQOO Neo9 (PD2338C) Herramienta Caps-Root sin desbloqueo** — esquema de escalada de privilegios mediante escritura física arbitraria basado en CVE-2025-21479 (Adreno GPU SDS) | Kitploit
Herramientas/GitHubGitHub/reaizuguo/vivo_iqoo_neo_9_root_research_on_cve-2025-21479
Seguridad AndroidEscalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónIngeniería InversaSeguridad MóvilExplotación de Binarios
GitHub

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
reaizuguo/vivo_iqoo_neo_9_root_research_on_cve-2025-21479

vivo_iqoo_neo_9_root_research_on_CVE-2025-21479

iQOO Neo9 (PD2338C) Herramienta Caps-Root sin desbloqueo** — esquema de escalada de privilegios mediante escritura física arbitraria basado en CVE-2025-21479 (Adreno GPU SDS)

Ver Repositorio
3413hace 1 mesAún no revisado

Neo9Root

Herramienta Caps-Root para iQOO Neo9 (PD2338C) sin desbloqueo — Esquema de elevación de privilegios por escritura física arbitraria basado en CVE-2025-21479 (Adreno GPU SDS)

License: MIT Platform Kernel

Sin necesidad de desbloquear el Bootloader, sin flashear, sin Magisk. Se obtiene escritura física arbitraria a nivel de kernel mediante la vulnerabilidad de GPU, y tras parchear funciones clave del kernel, un daemon root residente con capacidades completas (caps de 41 bits) proporciona capacidades root a rootc / su.

Característica clave: euid se mantiene en 2000 para evadir la detección anti-root vr.ko de vivo (euid=0 provocaría un reinicio del dispositivo); las capacidades root equivalen a uid=0 pero la identidad del proceso es segura.


✨ Características

  • 🔓 Sin desbloquear BL — No toca bootloader / particiones / dm-verity, todo en RAM, limpio tras reiniciar
  • 🧬 Root real a nivel de kernel — CapEff: 000001ffffffffff (capacidades completas de 41 bits), no es un disfraz a nivel de aplicación
  • 🛡️ Evade el anti-root de vivo — euid=2000 mantenido, la detección de vr.ko falla, cero bloqueos del dispositivo
  • ⚙️ Daemon residente — Cola de archivos + protocolo Base64, ejecución de comandos sin dependencias, salida completamente transparente
  • 🔌 Capa de compatibilidad — Wrapper su, invocable directamente desde MT Manager / Termux
  • 📦 Cero persistencia — Todos los parches en RAM, el reinicio restaura automáticamente el estado limpio

📱 Dispositivos compatibles

ElementoValor
DispositivoiQOO Neo9 (PD2338C)
SistemaAndroid 15
Kernel5.15.178-gaacdc35637c4-dirty (GKIv1)
GPUAdreno 740 (A7xx)
Disposición de memoriaSin KASLR físico (stext_pa=0xa8010000), slide global de VA

⚠️ La explotación depende de la disposición específica de este kernel (desplazamientos de símbolos, característica VIVO_VMET_BREAK_KMI, comportamiento de vr.ko), otros dispositivos/kernels requieren re-adaptación.

🚀 Inicio rápido

Requisitos del entorno

  • Windows + adb (o adb en cualquier plataforma, el script es versión PowerShell)
  • Depuración USB habilitada en el teléfono

Implementación con un clic (recomendada)

# 克隆后运行 (adb 需在 PATH; 或用 $env:ADB 指定路径)
powershell -ExecutionPolicy Bypass -File scripts\run_rootc_loop.ps1

El script automáticamente: envía los tres archivos → reinicia para obtener la ventana fría → ejecuta el exploit en múltiples rondas (tasa de acierto ~50%/ronda) → daemon listo → verificación.

Implementación manual

# 1. 推送 (只需一次, /data 持久)
adb push exploit\exploit_vivo_neo9 /data/local/tmp/
adb push client\rootc /data/local/tmp/
adb push client\su /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/exploit_vivo_neo9 /data/local/tmp/rootc /data/local/tmp/su"

# 2. 重启获取冷窗口 (重启后 <3 分钟内运行命中率最高)
adb reboot
# ...等待开机完成...

# 3. 启动 exploit (后台 daemon)
adb shell "cd /data/local/tmp && nohup sh -c 'CHEESE_STEXT_PA=0xa8010000 CHEESE_DAEMON=1 CHEESE_PATCH_CAP=1 ./exploit_vivo_neo9 > /data/local/tmp/exploit_daemon.log 2>&1 &'"

# 4. 等待就绪 (命中通常 10s~3min)
adb shell "cat /data/local/tmp/rootd_ready.txt"
# 输出 "ready" 即成功

🛠️ Uso

rootc — Ejecutar cualquier comando root

# 简单命令
adb shell "/data/local/tmp/rootc id"

# 复杂命令 (Base64 编码, 避免引号问题)
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('ls -la /data/adb; dmesg | tail -5'))
adb shell "/data/local/tmp/rootc B64:$b64"

su — Compatible con MT Manager / Termux

su -c "ls /data/adb"          # 任意 root 命令
su -c "chown 0:0 /path/file"  # 文件属主改为 root:root
su                            # 交互模式 (stdin 逐行)

Configuración de Termux: se debe ejecutar una vez en el primer uso (con permisos root):

# 开放队列目录写权限 + 安装 su 到 Termux PATH
su -c "chmod 1777 /data/local/tmp"
su -c "cp /data/local/tmp/su /data/data/com.termux/files/usr/bin/su && chmod 755 /data/data/com.termux/files/usr/bin/su"

MT Manager: Ajustes → ROOT → ruta su personalizada → /data/local/tmp/su

u0 — Operaciones de root real (euid=0)

Los entornos rootc/su mantienen deliberadamente euid=2000 (para prevenir la detección anti-root de vr.ko). Sin embargo, los drivers de algunas interfaces del kernel (como /proc/vrp, ciertos nodos sysfs) verifican current_euid()==0, y ni siquiera con todas las caps se puede pasar → en ese caso usa u0 para elevar a root real aprovechando CAP_SETUID del entorno rootd:

# 推送 (只需一次)
adb push client\u0 /data/local/tmp/u0
adb shell "chmod 755 /data/local/tmp/u0"

# 用法: u0 <绝对路径程序> <参数...>   (execv 需要绝对路径!)
$cmd = '/data/local/tmp/u0 /system/bin/sh -c "id; cat /proc/vrp 2>&1"'
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($cmd))
adb shell "/data/local/tmp/rootc B64:$b64"
# 输出: uid=0(root) gid=0(root) ...   ← 真 root 会话
  • Probado seguro: setuid(0) no dispara el fatal de vr.ko (el proceso principal rootd vive con uid=0 durante largo tiempo; los procesos uid=0 no están en la lista de eliminación)
  • Limitaciones confirmadas: /proc/vrp sigue devolviendo EPERM con uid=0 + caps completas (el driver vrp tiene una comprobación de permisos activa, no es DAC/SELinux — ingeniería inversa en curso); insmod con uid=0 también provoca el reinicio del dispositivo (la detección de carga de módulos no mira el uid del llamante)
  • Método de compilación en docs\u0_说明.md

Acceso de usuarios normales (app / con permisos inferiores a shell) a /data/local/tmp

/data/local/tmp por defecto es drwxrwxrwt (1777, propietario shell) — a nivel de DAC cualquier usuario puede leer/escribir. Lo que realmente bloquea a los usuarios normales (dominio untrusted_app) es SELinux (la política deniega al dominio app el acceso a la etiqueta shell_data_file):

# 1. DAC: 确保目录 1777 + 队列文件可写 (rootc 创建时已是 0666)
su -c "chmod 1777 /data/local/tmp"

# 2. SELinux: exploit 部署后处于 permissive, 无需额外操作 (permissive 不执行策略)
#    ⚠️ 不要用 setenforce 0 —— vr.ko 的 avc_has_perm hook 会检测 setenforce 动作
#       (kprobe 虽已中和, hfm 文本 hook 仍可能触发 fatal), 改走 exploit 的
#       物理写 permissive (run_selinux_rmw, 已内置在部署流程)

# 3. 验证 (用 app 身份 / run-as 执行 rootc)
run-as com.termux /data/local/tmp/rootc id        # 或任意 app 执行
# 输出 [rc=0] 即普通用户可正常使用 root 能力
  • Las apps pueden ejecutar rootc (directorio 1777 + archivo 755) → los usuarios normales obtienen capacidades root completas
  • Limitación: tras reiniciar, permissive deja de estar activo → el acceso de usuarios normales vuelve a estar restringido (shell_data_file solo accesible para el dominio shell); se restaura tras re-implementar
  • Solo lectura de archivos: usar su -c "cat /data/local/tmp/xxx > /sdcard/xxx" como intermediario (las apps acceden a /sdcard sin problemas)

Verificaciones comunes

su -c id                                        # uid=2000 正常 (见 FAQ)
su -c "grep CapEff /proc/self/status"           # 000001ffffffffff = 全能力
su -c "ls /data/adb"                            # 700 root 目录, 普通 shell 被拒
su -c "chown 0:0 /data/local/tmp/x && ls -l /data/local/tmp/x"   # root 专属操作
su -c "head -5 /proc/iomem"                     # 内核物理内存布局
su -c "ls /data/data/<任意包名>"                 # 任意 app 私有数据

🔬 Principio

Descargar herramienta