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

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

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

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

工具目录

分类

查看所有分类
Loading categories
zenfone9-root — 通过 CVE-2025-21479 和一个基于 perf 的物理地址泄露,在引导加载程序锁定的 ASUS Zenfone 9 上获取临时 root(uid 0)。GPLv3。 | Kitploit
工具/GitHubGitHub/ramenfast/zenfone9-root
Android安全权限提升内存取证漏洞分析漏洞利用逆向工程移动安全硬件安全论文与研究二进制利用
GitHubramenfast/zenfone9-root

zenfone9-root

4小时55分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

通过 CVE-2025-21479 和一个基于 perf 的物理地址泄露,在引导加载程序锁定的 ASUS Zenfone 9 上获取临时 root(uid 0)。GPLv3。

查看仓库

zenfone9-root — 在引导加载程序锁定的 ASUS Zenfone 9 上获取临时 root

针对引导加载程序无法解锁的 ASUS Zenfone 9 (AI2202) 获取**临时 root(uid 0)**的研究代码与笔记——因为 ASUS 已停止提供解锁工具,从开发者选项中移除了 OEM 解锁开关,并在当前固件上硬性拒绝 fastboot oem unlock / flashing unlock。

这不是引导加载程序解锁,也不会刷写任何东西。这是一种运行时 root:一条设备端原语链,最终使调用进程持有 root 凭据。重启即清除。

已验证于:ASUS Zenfone 9 (AI2202),Android 14,构建号 34.0304.2004.145,SPL 2024-07-05, 内核 5.10.205-android12-9-00029-g3f12df86bfdb-ab11799032,SM8475 / Adreno 730,引导加载程序已锁定。

授权 / 范围。 此处所有内容均针对操作者自己拥有的设备运行,通过授权的 ADB 连接进行。不攻击任何厂商服务器,不绕过任何签名密钥或解锁令牌,也不向任何分区写入任何内容。用于开发的手机是备用机,已备份并保持离线。请在你拥有且能承受损坏的硬件上进行测试。

攻击链

阶段作用位置
1CVE-2025-21479(Adreno KGSL):一个 SDS 数据包被错误分类为 ringbuffer 数据包,使用户态能够发出 CP_SMMU_TABLE_UPDATE 并将 GPU 的 TTBR0 指向攻击者选择的物理地址src/cheese.c
2物理地址泄露:此构建上 perf_event_paranoid = -1,因此对我们拥有的页面设置硬件观察点会返回 PERF_SAMPLE_PHYS_ADDR——即该页面的物理地址。替代了上游依赖的 pagemap 泄露(此处 PFN 被清零)src/pa_leak.{c,h}
3任意物理读写:在已知物理地址(来自阶段 2)处构建伪造页表,因此无需 spray 抽奖,也无需野指针遍历src/cheese_pa.c
4Root:从固件镜像离线解析内核符号,在设备上推导 KASLR 偏移,用 commit_creds(&init_cred) 桩补丁 __do_sys_capset,调用 capset()src/call_capset.c、scripts/

结果是在 u:r:kernel:s0 SELinux 上下文中获得 uid 0(它继承了 init_cred 的 SID),即实际上不受限制。此步骤要求 SELinux 处于 Permissive 模式——在 Enforcing 模式下进程会被杀死,因为凭据交换绕过了 SELinux 钩子。

快速开始

首先将 ZF9_SERIAL 设置为你的设备序列号(所有脚本都会读取它):

root@kitploit:~
export ZF9_SERIAL=<your-device-serial>
root@kitploit:~
# 0. 一次性操作:构建并推送设备端二进制文件(需要 Android NDK)
#    参见 scripts/ 中使用的确切 clang 调用
adb push cheese_pa call_capset /data/local/tmp/

# 1. 完整流程:SELinux -> permissive,打补丁,以 root 运行命令,恢复一切
scripts/root-now.sh id
scripts/root-now.sh sh        # root shell

该脚本始终恢复原始内核文本和 SELinux 状态(受 trap 保护),并通过回读验证恢复。

当前状态——如实说明

  • Root 已被证明。 已验证回执:uid=0(root) gid=0(root) context=u:r:kernel:s0, capset(NULL,NULL) -> 0。
  • 重新应用尚不完全可靠。 底层原语是一个竞态(TTBR0 更新与使用它的命令之间):竞态失败会导致 GPU 页错误,随后 KGSL 会限制该上下文(gpu fault threshold exceeded 3 faults in 3000 msecs),之后进一步的命令会以 EPERM 失败。观察到的补丁成功率在不同运行间介于 13/13 到 2/13 个 dword 之间。
  • 让 GPU 保持忙碌。 该原语与 GPU 上下文切换存在竞态:同样的 13-dword 补丁在 GPU 空闲时验证为 0-2/13 个 dword,而在运行 screenrecord 负载时为 11-13/13。脚本会为每次操作启动自己的负载(读取也存在竞态),但绝不裸运行这些工具的内部控制逻辑。
  • 部分修补的函数是危险的(capset 调用者可能执行垃圾指令)。脚本最后写入入口指令,验证每个 dword,并在失败时恢复——但如果某次运行状态退化,请重启后再重试。
  • 无持久化,无引导加载程序解锁。 没有 ASUS 就无法使用自定义 ROM。

值得保留的安全规则:每次写入前先读取,始终恢复你所修补的内容,绝不让注入的页表项保持生效,不要触碰 secure/TZ 物理内存(这是致命的),并通过重启来恢复退化状态。ROADMAP.md 列出了完整的注意事项清单及每项背后的证据。

仓库结构

root@kitploit:~
ROADMAP.md      持久交接文档:已验证常量、流程、注意事项、开放路径
STATUS.md       当前状态 + 验证回执
src/            pa_leak.{c,h} · cheese.c · cheese_pa.c(主力:PROBE/POKE/SELFTEST/ROOT 模式)
                call_capset.c · host_kallsyms.c(离线符号解析器)
scripts/        root-now.sh · patch-dwords.sh · demo-root.sh · verify-backup.sh
tools/          btf_offsets.py

固件镜像、OTA 包和设备日志被有意不提交(参见 .gitignore)。

致谢

  • zhuowei/cheese — 本移植所基于的 CVE-2025-21479 概念验证,以及其 kallsyms 解析器。
  • Qingizi7/cve-2025-21479_iqooneo8 — 同一 SoC(SM8475)上的运行时 root 链,确立了可行性。
  • Project Zero: Attacking the Qualcomm Adreno GPU — 原始的 KGSL/SMMU 研究与 ioctl 定义。
  • Qualcomm June 2025 security bulletin — 此设备早于该微码修复约 11 个月(ASUS 已终止支持,因此该修复永远不会落地)。

许可证

GPLv3 — 参见 LICENSE。

下载工具