搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

diabl0w/DFRoot

安全

利用 DirtyFrag 内核漏洞,在不解锁 Bootloader 的情况下加载自编译内核模块,为兼容 KernelSU 的 Android 设备获取 root。

826
418
C
GPL-2.0
创建于 48 天前

项目介绍

DFRoot 面向 Android 设备,利用 CVE-2026-43284(DirtyFrag)的内核页缓存写原语,加载自定义内核模块并取得 root 权限。它不要求解锁 Bootloader,并且刻意不绑定特定 SU 管理器,兼容任意 KernelSU 系管理器。

工作原理是借助内核将 AES-CBC ESP 包直接解密到 splice() 打开文件的页缓存中。构造 IV 后,可在没有写权限、不触发写时复制的情况下覆盖映射共享库中 16 字节对齐的块。工具把 shellcode 补丁进 libc++.so 中被 hook 的 std::ostream 函数,等 init 回收孤儿进程时执行,再用 insmod 加载 dfroot.ko,将 SELinux 设为 permissive,并从已安装的 SU 管理器启动 su 守护进程。README 给出了完整的六步利用链,从 IPsec 转换、通过 crash_dump64 执行 splicehelper、写入 vendor_file,到 libc++ hook、内核模块 init 和 bootstrap(利用链)。

快速使用

  1. 下载并安装最新的 DFRoot 发布包。
  2. 安装可配合的 SU 管理器:三星设备使用 diabl0w 的 KernelSU;其他设备可选 KernelSU、KernelSU-Next 或 KowSU。
  3. 运行 DFRoot 并查看日志。若提示补丁失败,说明设备内核不受影响;提示成功则应通过已安装的 SU 管理器获得 root。

从源码构建时仓库使用 make,需要具备 Android 构建环境和内核模块工具链。README 未列出 NDK 版本、内核头文件或目标内核版本等前置条件,自行编译前需要补齐这些信息才能运行。

使用约束

工具只在仍包含该漏洞行为的内核上生效。较新的内核已合入官方缓解,或存在意外缓解(通常在 6.1 内核上出现),会直接报告补丁失败。若显示成功但没有 root,README 建议关闭 Auto Soft Reboot,或查看已有的讨论帖。模块装坏后可在设置中禁用 KSU 模块恢复;开启 Start at Boot 后出现循环启动,通常需要在安全模式下关闭该选项。README 同时声明作者不对设备损坏负责。

利用过程会修改内核状态、写入 vendor_file 路径、将 SELinux 设为 permissive,并在适用时绕过 DEFEX。这些改动会影响系统稳定性和安全状态。项目采用 GPL-2.0 许可证,并在致谢中列出 LSPosed 的 lspromise、polygraphene 的 DFReroot 和 combeng6th 的 DirtyInit。

HotRepo 点评

DFRoot 有 826 星和 418 个 fork,但没有附带日榜名次或时间序列增长数据,因此无法在 HotRepo 榜单上观察其走势。对一款安全工具来说,仓库内容相当具体:完整说明了利用链并列出依赖来源,实现部分可供审查。主要的不确定在分发环节——用户安装的是预编译发布包,README 没有说明该构建产物与源码树的对应关系,也没有交代签名者身份。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

相关推荐

  1. LSPosed/LSPatch把 Xposed 模块注入 APK,让 Android 应用免 Root 加载模块,适合普通用户和逆向分析人员。Java9,453