boxiaolanya2008/CVE-2026-43499-Neo11Plus 的分支,为 RootMyVivo 重新整理。砍掉了所有拿到 root 之后会把手机搞坏的东西,漏洞利用核心保持经过验证的时序。
| 目录 | 设备 | 内核 | 偏移来源 |
|---|---|---|---|
PD2520-BP2A.250605.031.A3 | iQOO Neo 11 | 6.6.89 | 自己 boot.img 的 kallsyms+BTF,真机验证 |
PD2520-A-16.0.28.2 | iQOO Neo 11 | 6.6.127 | boot_b 的 kallsyms |
I2401-16.1.22.2 | iQOO 13(印度版) | 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 —— 同一个二进制也适用于 b57 内核的 Neo10 Pro |
PD2405-AP3A.240905.015.A1 | vivo X200 Pro | 6.6.89 | CyberMeowfia |
新机型 = src/targets/ 下新目录:target.h(偏移)+ root.c(我们验证过的收尾,原样复制)。
| 组件 | 原因 |
|---|---|
| 换壁纸 + 杀 system_server | 「自动」软重启和壁纸被换的元凶 |
| 39555 端口的 io 守护进程 | 只有调试用的 kernelapp 需要它 |
| /apex/com.android.virt 上的 tmpfs 覆盖 | 软重启时挂死 zygote(黑屏) |
| 开机服务 10-neo11-su.sh | 持久化交给应用做 |
| 其他机型的偏移表 | 现在每目标一个自己的目录 |
漏洞利用核心(futex PI UAF → pselect 假锁 → 堆喷射 → pipe 物理读写 → root)和 posture(panic_on_oops=0、kptr_restrict、AVC 污染)原封未动。
在 upstream 之上加了:safety_quiesce(PI 路由前等 loadavg < 4)、cred-guard(写之前检查地址规范性)、最多 3 次全新 fork 的重试循环。环境变量:RMV_ATTEMPTS、RMV_RETRY_DELAY。
内核 panic 的来源:INIT_STACK_ALL_ZERO 清栈毁掉假 waiter —— 用 quiesce+retry 缓解;reclaim 失败后命中垃圾目标 —— cred-guard 拦一道;出厂 panic_on_oops=1 —— posture 在拿到 root 后第一时间关掉,在那之前只能靠小心。
Windows + NDK r29:
build_ports.bat # 全部移植
build_ports.bat I2401-16.1.22.2 # 单个目标
build-win.bat # PD2520 6.6.89
也可以用 Termux 在手机上编译 —— 见 Makefile。
产物:build/<target>/bin/preload.so(约 140 KB)。运行:在 shell 域里 LD_PRELOAD=$PWD/preload.so /system/bin/true。
全部由 P0_DATA_ALIAS_CONST 从 P0_PHYS_OFFSET 和 P0_KERNEL_PHYS_LOAD 自动推导。高通 SM8750:0x80000000/0xa8000000;联发科 Dimensity 9400:0x80000000/0x80000000。值错了不会 panic —— 只是 slide 收不了敛。
CVE 已在 6.1.175 / 6.6.140 / 6.12.86 修复。但兼容性不只看版本:rt_mutex_waiter 落在 do_futex 栈帧的哪个位置取决于 PGO/LTO 的编译产物。详细分析见 JoinChang/ghostlock-oneplus:OPLUS 的 6.1 把 do_futex 内联了,漏洞利用不可行;vivo 的 6.1 还活着。动手移植之前先检查栈帧。
仅限授权研究和自有设备。