Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/joinchang/ghostlock-oneplus
Android安全权限提升漏洞利用框架漏洞分析渗透测试移动安全学习与教育二进制利用
GitHubjoinchang/ghostlock-oneplus

ghostlock-oneplus

# GhostLock (CVE-2026-43499) 针对已锁定引导加载程序的 Android 设备的内核漏洞利用

查看仓库
235462511天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

GhostLock — 锁定引导加载程序越狱

针对锁定引导加载程序的 Android 设备内核漏洞利用。无需解锁引导加载程序或修改引导镜像即可实现临时 root + KernelSU 安装。运行时自动检测内核版本,并配备多设备偏移表。

GhostLock running on OnePlus Ace 6T with KernelSU (LKM, Jailbreak mode)

漏洞

CVE-2026-43499 — Futex PI(优先级继承)释放后使用

影响 Linux 内核 5.7 ~ 7.1。已在稳定版 6.1.175、6.6.140、6.12.86 中修复。截至 2026 年 9 月,大多数 Android 设备仍未打补丁。

pselect6 系统调用将 fd_set 数据复制到内核栈上。当与 futex PI 等待者机制结合时,被释放的栈帧可被重新利用为 rt_mutex_waiter 结构。在 PI 链遍历期间的红黑树重平衡随后会将受控值写入任意内核地址。

支持的设备

已验证可用

设备SoC内核GKI 分支SHIFT
OnePlus Ace 6T (PLR110)SM88456.12.38android16-50
OnePlus 15 (CPH2745/2747/2749)SM88506.12.23android16-50
Xiaomi 17 (pudding)SM88506.12.23 / 6.12.69android16-5 / android16-60
OnePlus 13 (IN2060)SM87506.6.89android15-8-2
OPPO Pad 4 ProSM87506.6.89android15-8-2

已提取偏移(待设备测试)

不可行

pselect 栈覆盖要求被释放的 rt_mutex_waiter 落在用户可控的 stack_fds 区域(字 0–14)内。其落点由编译器 PGO/LTO 配置决定,而非内核版本。参见 栈布局。

关于 6.1 可行性的说明: OPLUS 6.1 内核因 PGO 内联 do_futex 而始终不可行。然而,部分非 OPLUS 6.1 内核(vivo)保留了标准调用链,因此可行(vivo T4、X Fold3 Pro)。可行性必须逐设备检查。

漏洞利用流程

两条 root 路径,根据设备能力自动选择:

路径 A:UMH Root(首选,C ashmem 设备)

要求 off_ashmem_misc_fops != 0(C ashmem,BSS 中具有静态 miscdevice)。

root@kitploit:~
PI 写入 (mode=4)  →  将 miscdevice fops 重定向到伪造 fops
                   →  configfs 读/写 → pipe physrw(1 字节精确内核读/写)
                   →  SELinux enforcing = 0(单字节,无 policycap 破坏)
                   →  UMH:将 work_struct 注入 system_unbound_wq
                   →  root 脚本 → ksud 延迟加载 → KSU 已安装

适用于:OnePlus 13、OPPO Pad 4 Pro、5.10/6.1 C ashmem 设备。 不适用于 Rust ashmem(6.12 GKI)——堆分配的 miscdevice。

路径 B:直接 PI 写入(回退)

root@kitploit:~
写入 1 (mode=1)  →  SELinux enforcing = 0(8 字节写入,破坏相邻字节)
写入 2 (mode=2)  →  task->cred = init_cred(uid=0,全部能力)
Root shell         →  ksud 延迟加载 → KSU → SELinux 策略修复

在 W1+W2 之后,漏洞利用会修补 SELinux 策略二进制的 config 字段(对 ANDROID_NETLINK_ROUTE + GETNEIGH 执行 |= 0xC0000000),并通过 /sys/fs/selinux/load 重新加载以恢复网络连接。

引导模式(手机独立运行)

root@kitploit:~
应用 (seccomp)  →  写入 1 → mini-adb TCP → adb shell:完整漏洞利用 → root

自动启动

启动时启动器由独立的 GhostLock Anchor 应用 提供。

栈布局可行性

当 NFDS=320 时,core_sys_select 在内核栈上分配一个 256 字节的 stack_fds 缓冲区:

root@kitploit:~
stack_fds:  0    5    10   14 | 15   20   25   29
            ├─in─┤─out─┤─ex──┤ ├res_in┤res_out┤res_ex┤
            ◄── USER CONTROLLED ──►│◄── KERNEL ZEROED ──►

漏洞利用将伪造的等待者字段(task、lock)放置在 fd_set 输入位图中。对于 6.12 嵌套等待者(14 字):最大可行 waiter word = 3。对于 5.10/6.1 紧凑等待者(10 字):最大可行 waiter word = 7。

等待者位置取决于调用链深度:

kernel_phys_load

所有内核写入均使用线性映射别名。引导加载程序选择 kernel_phys_load,该值因 SoC 而异:

SoCkernel_phys_load
SM8845 (Ace 6T, 15T)0xa8000000
SM8750 (OnePlus 13, OPPO Pad 4 Pro)0xa8000000

错误的值会静默失败。在已 root 的设备上读取:

root@kitploit:~
su -c 'grep -i "Kernel code" /proc/iomem'   # c7810000-... → 0xc7800000

运行时覆盖:KPHYS=0xc7800000 /data/local/tmp/a/e

PSELECT_SHIFT

root@kitploit:~
/data/local/tmp/a/e                        # 默认 (shift=0)
PSELECT_SHIFT=-2 /data/local/tmp/a/e       # OnePlus 13 (6.6)

KIMAGE_TEXT_BASE

5.10 内核使用 0xffffffc008000000(VA_BITS=39,不同于 6.x 默认值 0xffffffc080000000)。这通过设备偏移条目中的 kimage_text_base 字段自动处理。

构建

root@kitploit:~
make NDK_ROOT=/path/to/android-ndk

或直接:

root@kitploit:~
NDK=/path/to/android-ndk
"$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android35-clang" \
  -O2 -Wall -Isrc/core -Isrc/devices -DTARGET_CONFIG_H=\"target.h\" \
  src/core/main.c src/core/util.c src/core/slide.c \
  src/core/fops.c src/core/pipe_physrw.c src/core/root.c \
  src/core/miniadb.c src/core/umh_root.c \
  -o ./ghostlock -fPIE -pie -pthread

前置条件

ksud(KSU 安装所需)

GhostLock 提供临时 root。KernelSU 安装需要 ksud,它针对每个 KMI 版本捆绑了 kernelsu.ko。

方法步骤
ReSukiSU APK(推荐)安装 ReSukiSU 或此 。捆绑 。

设置

root@kitploit:~
adb shell mkdir -p /data/local/tmp/a
adb push ./ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e
adb shell /data/local/tmp/a/e

在启动完成且 ADB 就绪后运行。

添加新设备

仅需 boot.img — 无需 root,无需设备访问权限。

1. 提取内核和 kallsyms

完整工作流程参见 kallsyms 工具指南,或:

root@kitploit:~
python tools/extract_target.py --kallsyms kallsyms.txt
python tools/extract_btf.py kernel

2. 确定可行性

通过在内核二进制中搜索所有以 futex_wait_requeue_pi 为目标的分支指令,检查 do_futex 是否被 PGO 内联。如果 __arm64_sys_futex 直接调用它(绕过 do_futex),则该设备很可能不可行。

3. 创建设备条目

使用提取的偏移添加 src/devices/<name>/offsets.h,并将其包含在 src/devices/offsets.h 中。使用相应的结构体偏移宏:

对于 5.10/6.1 紧凑等待者设备,还需设置 .kimage_text_base=0xffffffc008000000ULL。

文件

许可证

仅限授权的安全研究和教育用途。

下载工具
设备SoC内核备注
OnePlus 15T (PLZ110)SM88456.12.38与 Ace 6T 相同内核
OPPO Reno10 Pro+ (CPH2521)SM84755.10.2365.10 紧凑等待者,waiter word=0
Vivo X Fold3 Pro (PD2337)SM86506.1.1246.1 紧凑等待者,waiter word=3
Vivo T4SM86506.1.1456.1 紧凑等待者,waiter word=3
设备SoC内核根本原因
OPPO Find X9 UltraSM87506.12.58PGO 消除 do_futex → waiter word=14
OnePlus 12SM86506.1.141PGO 内联 do_futex → waiter word=13/19
OnePlus 13R / Ace 5SM86506.1.xOPLUS 6.1:waiter word=13
realme RMX5070SM66506.1.141OPLUS 6.1:waiter word=13
OPPO Pad 5 (OPD2502)MT68786.1.134OPLUS 6.1:waiter word=13
Motorola Edge 60 FusionMT68786.1.145非 OPLUS 6.1:结果相同
iQOO Neo 10 CNSM86506.1.84do_futex 帧 0xD0 → waiter word=-11
OPPO PKW110—5.15.180do_futex 帧 0x140 → waiter word=-29
iQOO Z9 5G—5.15.178do_futex 帧过大
CPH2763 (OPPO)—6.1.115OPLUS 6.1:PGO 内联,waiter word=24
模式调用链可行
android16-5 (6.12)sys_futex → do_futex → fwrpi✅ waiter word=2
android15-8 (6.6)sys_futex → do_futex → fwrpi✅ waiter word=2 (SHIFT=-2)
vivo 6.1sys_futex → do_futex → fwrpi✅ waiter word=3
OPLUS 6.1sys_futex → fwrpi (PGO 内联)❌ waiter word=13+
android16-6 (X9 Ultra)sys_futex → fwrpi (PGO 内联)❌ waiter word=14
5.10 OPLUSsys_futex → do_futex → fwrpi✅ waiter word=0
SM8650 (vivo T4, X Fold3 Pro)
0xa8000000
SM8850 (OnePlus 15, Xiaomi 17)0xc7800000
fork
libksud.so
CI 发布版从 ReSukiSU CI 下载
内核等待者布局宏
6.12.x嵌套(14 字)STRUCT_OFFSETS_6_12
6.6.x嵌套(14 字)STRUCT_OFFSETS_6_6
6.1.x (vivo)紧凑(10 字)STRUCT_OFFSETS_6_1
5.10.x紧凑(10 字)STRUCT_OFFSETS_5_10
文件描述
src/core/main.c漏洞利用入口、W1/W2、UMH 路径、引导模式、root 脚本、SELinux 策略修复
src/core/fops.cpselect 路由、PI 写入、CFI 阶段、紧凑等待者支持
src/core/util.c堆喷射、KernelSnitch、slab 排空、payload 设置
src/core/pipe_physrw.cPipe 缓冲区物理内存读/写
src/core/umh_root.c通过工作队列注入实现 UMH root
src/core/miniadb.c迷你 ADB 客户端(TCP + RSA 认证)
src/core/target.h内存布局、结构体字段默认值(6.12)
src/core/runtime_struct_offsets.h每设备结构体字段覆盖
src/devices/offsets.h设备偏移表 + STRUCT_OFFSETS_* 宏
tools/extract_target.py从 kallsyms 提取偏移
tools/extract_btf.py从 BTF 提取结构体偏移
tools/kallsyms/端到端 kallsyms 恢复工作流程