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

KSuRoot 3.1.1 —— 移交 root + 5.x beta 开关 + 内核支持口径(主线 6.6/6.12)

Choose a tag to compare

@hmascs hmascs released this 12 Sep 12:20
· 34 commits to main since this release

⚠️ 温馨提示:蓝厂机型调度策略较为严格,提权时子进程易被系统回收。请先在「开发者选项」中开启「停止限制子进程」后再执行提权,成功率更高。

真实内核提权工具,请只在自有且愿意承担风险的设备上使用,动手前先备份数据。
覆盖安装即可(同签名),versionCode 311。


本次更新(相对 v3.0.2)

一、新增:移交 root

载荷拿到的 root 只活在当前进程里,进程一结束就没了。本版新增把它移交给常驻 Root 管理器的完整链路:

  • 每次打开软件、只要检测到 root 就弹框询问是否移交(主页最底部卡片可随时再进)
  • 管理器二选一:KernelSU(me.weishu.kernelsu)或 SukiSU Ultra(com.sukisu.ultra)
  • 执行 libksud.so late-load --allow-shell --package-name <包名>
  • 把「管理器没装」与「移交失败」分成两种结果 —— 这两种该给的建议完全不同(一个去装、一个查版本)
  • root 探测路径含 /apex/com.android.virt/bin/su(载荷提权后的落点,置于首位)
  • 载荷跑完自动重探 root,不需要手动点「重新检测」
  • 探测失败时可展开逐条诊断(哪条路径不存在 / 被拒绝 / 超时),并支持手动重试

⚠️ 移交没有在真机上点过完整流程,只验证了命令行层:
SukiSU 那条 late-load 实测 rc=0 且静默成功;不存在的包名 rc=1 并输出
kernelnosu: exec /data/adb/ksud failed。
另外 late-load 的成功信号很弱(成功 = 空输出 + rc 0),
所以界面只报「已执行移交」并原样展示输出,请自己去管理器里确认。

二、新增:5.x 内核支持(beta)开关

  • 位置:设置 → 内核支持,默认关
  • 关着时识别到 5.x → 不采用五系方案,构建被拦下并引导去开启
  • 开启前弹确认框说明风险;开启后构建仍带 [测试内核] 提示

三、内核支持口径

系列
主线 6.6 / 6.12 —— 「通用方案」与「vivo / iQOO 方案」都覆盖
测试 5.x(需开上面的 beta 开关)
拒绝 6.1 及其它 6.x 次版本 —— 明确拦下,不走 beta 开关

构建前先定版本与方案:读完 boot.img 即按实测内核版本选方案;版本认不出、5.x 开关没开、或强制指定与实测冲突,都在打补丁之前零成本拒绝。

⚠️ 6.12 声明支持,但当前会明确报缺:还没有为 6.12 登记偏移产物。
代码路径(两个方案 × 两个主线系列)已实装,补数据即可生效 —— 但那需要
为该内核编译的载荷 .so,或用真实 6.12 boot.img 实测。
本版不会拿 6.6 的数值去凑 6.12(那正是本项目两次布局勘误的同一种错)。

四、boot 镜像格式识别

  • AOSP boot v0~v4、vendor_boot(点名「内核不在这个文件里」并指路)、裸 Image / 压缩镜像
  • MTK / 高通 split 的启发式提示(输出一律带「疑似」,不假装是解析)

五、设置页重构

  • 去掉原先的大段正文说明与三个大按钮
  • 「内核系列」改为一行可点选;「忽略冲突」与「5.x 内核支持」合并进同一个「内核支持」分组
  • 详细说明移到做决定的地方(确认框 / 选择器),设置页只留短摘要
  • 全部改用与全页一致的 miuix 偏好行,不再各写一套

六、修掉的 bug

  1. su 候选路径缺料:真机上检测不到 root —— 可用 su 在 /product/bin/su,而候选只赌 /system/bin、/sbin
  2. 裸名 "su" 被无条件当作「存在」,等于假装它在,报出来的理由是「找不到可用的 su」,把真因盖住
  3. looksSuccessful 漏 not permitted:Operation not permitted(late-load 最常见失败)会被报成成功
  4. 强制指定未参与前置判定:boot.img 白解一遍才被内部闸门拒绝
  5. 阻断只标红不弹窗:违反 P1 定的规矩,已加分类阻断弹窗
  6. 进度框错用确认框正文(「正在执行」里写着「是否移交?」)
  7. e2e_check.sh 用旧快照覆盖 security 模块 → 两个变体都编不过,而检查脚本一直报成功
  8. KSU_TEST_BOOT_IMG 从未透传进测试 JVM → 那条端到端用例永远 SKIP

七、签名

设备上及本项目历史版本用的都是 AOSP testkey(CN=Android,SHA-256 a40da80a…)。
打包脚本原先用的自造密钥与之不一致,签出来无法原地升级(必须卸载重装、丢数据)——
已改用 testkey,pm install -r 实测通过。

⚠️ testkey 是公开密钥,只保证兼容性、不提供身份保证。适合自用 / 内测。

验证情况

  • 单测 136 个(1 个环境门控跳过),debug + release 两变体均编译通过
  • 真机原地升级:versionCode 310 → 311