Skip to content
This repository was archived by the owner on Oct 3, 2026. It is now read-only.

KSuRoot 3.0.1 —— 修掉「内置动态库」的真正卡点

Choose a tag to compare

@hmascs hmascs released this 10 Sep 20:09
· 35 commits to main since this release

KSuRoot 3.0.1

修掉「内置动态库不可用」的真正卡点 —— 一行多余的 chmod。
覆盖安装即可(同签名),versionCode 301。

⚠️ 真实内核提权工具,请只在自有且愿意承担风险的设备上使用,动手前先备份数据。


问题是什么

2.2.0 起,只要选择「内置动态库(libbs.so)」并点安装,安装链就会在刚打印完下面这行之后立刻断掉:

[+] 支持配置: fixed-bn-so
使用内置动态库:libbs.so
[-] chmod failed: EACCES (Permission denied)
[*] 安装失败

chmod failed: EACCES (Permission denied) 是 Android Os.chmod() 抛出的 ErrnoException 原文,来自 PayloadRepository.bundledPayloads() 里的一行:

Os.chmod(exploit.absolutePath, 0b100100100)   // 0444

为什么它会失败

内置载荷住在 applicationInfo.nativeLibraryDir。这个目录里的文件是安装器以 system 身份提取的:

/data/app/~~…/com.ting.root-…/lib/arm64/
-rwxr-xr-x system system 162328 libbs.so
-rwxr-xr-x system system  26024 libcve43499root.so

属主是 system,不是应用自己 —— 非属主执行 chmod,内核直接回 EACCES。而它本来就是 r-xr-xr-x:那次 chmod 纯属多余(载荷只被 LD_PRELOAD 映射,不需要额外权限),却因为没有兜异常把整条安装链打断了。

「自定义动态库」一直没这个问题,是因为那份文件由应用自己写进私有目录、属主是应用自己。

3.0.1 怎么修

新增 PayloadStaging,四个载荷入口(内置 / 自定义 / 下载 / KernelSU)与执行助手统一走它:

1. 已经够用(可读 / 可执行)→ 原样返回,一次 chmod 都不做     ← 本机走的就是这条
2. 不够用 → 先试就地 chmod(有些 ROM/分区允许)
3. 还不满足 → 复制到应用私有目录(一定能写)再补权限,并按「同名同长度」缓存复用
4. 全失败 → 返回原文件,交给调用方已有的 require 兜底

因为原生库本来就 -rwxr-xr-x、对应用世界可读,第一步的 canRead() 即为真 → chmod 那行再也不会被执行 → EACCES 在结构上不可能再出现。

顺带把另外两层也一起说清楚

「内置动态库不可用」其实是三层叠在一起,前两层是隐患,第三层才是卡住安装的那一步。三层现在都已处理:

层 问题 状态
打包 AGP 默认 strip jniLibs 里的 .so,libbs.so 162328 → 142848 字节,跑起来的其实是被二次加工过的二进制 已用 keepDebugSymbols 保住原件
版本 内置的是上游 v1.3.0 已固定为 v1.0.0(162328 字节,sha256 87bf839f…b861),慢但稳
chmod 原生库属主是 system → Os.chmod EACCES → 安装链中断(真凶) 3.0.1 修复

上一版(3.0)的发布说明把「内置动态库已修复」写在了前两层上,那是不完整的 —— 特此更正。

你可以自己核对

装完之后从 /data/app 把 base.apk 抠出来:

unzip -p base.apk lib/arm64-v8a/libbs.so | sha256sum
# 87bf839fc8524ed25831a22166ebc6cef898e7ddc77ce77736add5ca49b78b61

其它(与 3.0 相同)

  • 载荷构建页:boot.img → kallsyms → 偏移 → 打补丁的动态库;点构建先选方案(通用 / vivo·iQOO vr.ko 绕过);产物自动进 Download/ 与「自定义动态库」
  • 免 ADB:内核 6.6 及以上(6.6 / 6.12 已验证,6.7~6.11 同理);低于 6.6 才需要 Shizuku(ADB),设备信息里新增内核版本行与判定
  • 运行记录只记过程不判成败;日志支持一键复制与保存到指定目录
  • 液态玻璃悬浮底栏、MIUIX 卡片分组、版本号 3.0.1

Apache-2.0 · 仅供安全研究与学习,请仅在自有且受控的设备上使用。