Repository navigation
Releases: xiaohj233/ghostlock-x200-root
Releases · xiaohj233/ghostlock-x200-root
Release list
GhostLock-X200 v1.3.5
GhostLock-X200 v1.3.5 更新日志
与 v1.3.4.1 相比:
修复
- STAGE5 写链 panic 根因修复: 写链完成后立即退出 (GL_SLIDE_ONLY), 消除二次链走;
恢复官方对齐 (GL_FPAD 24→0) 消除 fd_set 覆盖漂移; 覆盖漂移时锁/树字段读零区
(words 表安全化) 安全 miss 而非 panic; 新增逃生门 (alarm/超时/强制退出),
卡死进程不再残留占 CPU 触发 watchdog。 - KernelSU su 全灭修复: ksud 在 root 窗口内落位 /data/adb (STAGE6.0),
kernelsu 加载前就位; /data/adb 强制 0755, 修复第二次及以后运行 su 失效
("su: inaccessible or not found"); STAGE6.1/STAGE7 真实校验 su 与 ksud,
杜绝假 PASS。 - vr.ko 反 root 对抗前置: clear_vr_tag 在提权进程创建前加载, 防止
KernelSU 提权进程被杀 (manager "获取 root 失败"/页面异常)。 - 极端负载 panic 防护: STAGE4 写前静默门, 设备负载 (loadavg) 过高时
中止运行并提示, 不再冒险写入 (STAGE5 写链在极端负载下有 panic 风险)。
新增
- STAGE0 内核匹配门禁: 设备内核与机型偏移不匹配时, 在第一次内核写之前退出。
- 非 b57 机型 glt 门禁: 禁止使用 b57 编译的二进制跨内核强跑; 非 b57 机型
必须使用本机型编译产物, 缺失时自动编译 (失败即终止, 不再提供风险自担选项)。 - NDK 自动下载确认: 无可用 NDK 时, 下载前明确提示体积 (约 1.1GB) 与保存位置。
- vr.ko 偏移跨机型化: 优先使用机型模块自带 vr_offsets.json。
- w2host 轮询降负载: 每轮额外 1ms 睡眠, 降低写链窗口期自干扰。
已知情况
- STAGE5 写链为概率性时序原语: 设备繁忙时首轮可能 miss (安全), 由后续轮次命中;
设备负载过高时 (loadavg≥20) 直接中止, 不重启不 panic。 - 仅 vivo X200 PD2415 (b57) 真机适配; 其他机型需自行生成模块并编译本机型 glt。
- 在线卸载内核模块 (rmmod) 会触发 kernel panic; 工具不提供在线卸载, 重启设备即清除。
GhostLock-X200 v1.3.4.1
GhostLock-X200 v1.3.4.1
修复
- 修复编码错误: v1.3.4 打包时
root.ps1丢失 UTF-8 BOM, 导致 Windows PowerShell
5.1 (run_root.bat调用的powershell.exe) 按 ANSI 误读中文注释/字符串,
双击run_root.bat直接报 PowerShell 解析错误 (Missing closing ')'/||等)。
v1.3.4.1 已补回 BOM, 并给发布流程增加 BOM 校验, 防止再次发生。
说明
- 二进制与 v1.3.4 完全一致 (glt_esync / ksud / w2host, 均已实测通过), 本次仅修复编码问题。
GhostLock-X200 v1.3.4
GhostLock-X200 v1.3.4
本版说明
- v1.3.4 为 v1.3.3 的稳定性修复版,功能全貌见
release_notes_v1.3.0.md;
本版仅列出相对 v1.3.3 的变化(含两轮修复:manager "获取 root 失败"+UI 空白、
manager 模块页/超级用户页永久转圈)。
修复 1(对比 v1.3.3):manager "获取 root 失败" + UI 空白
- 根因:vivo
vr.ko反 root 模块 hookcommit_creds给提权进程打标记,
并在sys_exit(syscall trace 路径)杀掉"非 root→root"转换的进程 →
KernelSU manager 提权瞬间被杀,表现为"获取 root 失败"+ 界面空白。 - 修复:新增内核模块
clear_vr_tag.ko(GPL-2.0,源码随包),kretprobe
commit_creds:仅在真正的非 root→root 提权时清除task+0x06/task+0x2c
标记与TIF_SYSCALL_TRACEPOINT位(root→root、非 root→非 root 不动,
避免破坏 KernelSU 对 app 链的系统调用 hook)。主链新增 STAGE6.5 在
kernelsu 加载后立即 insmod 该模块(cc_addr取当前 boot kallsyms 的
commit_creds地址)。 - 偏移提取工具:新增
tools/offset_tools/extract_vr_from_img.py
(从固件镜像提取 vr.ko)与extract_vr_offsets.py(逆向提取对抗偏移),
产出tools/scripts/vr_offsets.json(内置 b57 实测值,其他机型可自动重算)。
修复 2(对比 v1.3.3):manager 模块页/超级用户页永久转圈
- 根因 1:KernelSU sucompat 把所有
su调用重定向执行/data/adb/ksud。
该文件缺失/损坏时(首次装机 /ksud install半途失败),全部su失败
(su: inaccessible or not found)→ 模块页/超级用户页永久转圈。- 修复:新增 STAGE6.1,加载 kernelsu 后立即校验
/data/adb/ksud为
完整 ELF,缺失/损坏自动修复(su 可用走 su,su 不可用回退 rootcmd),
先于一切 su 使用。
- 修复:新增 STAGE6.1,加载 kernelsu 后立即校验
- 根因 2:manager 未注册(缺
ksud debug get-sign),内核不识别
manager,其自身 su 被降级为非 root profile(实测 uid=2)→ 页面永远
拿不到 root。- 修复:STAGE8 自动执行
ksud debug get-sign(内核据此识别 manager)。
- 修复:STAGE8 自动执行
- 根因 3:STAGE6.5 原先经 rootcmd socket 加载 clear_vr_tag,而 kernelsu
加载后会阻断该 socket → 对抗模块加载失败。- 修复:STAGE6.5 改用
su -c insmod,加载结果严格门禁(FAIL 即报错)。
- 修复:STAGE6.5 改用
其他变化(对比 v1.3.3)
- panic 诊断增强:失败时窗口内直接显示诊断摘要与"失败定位"(最后 STAGE
状态)+ 主链输出尾部,截图即可定位,无需解包 zip。 - 失败路径加固:
-WinOffsPath传入不存在的偏移文件时立即报
WIN OFFS MISSING并以非零码退出(此前静默空偏移继续运行)。 - 敏感信息清理:root.ps1 注释中的设备示例序列号、
vr_offsets.json
中的本机构建路径替换为占位符。 - 版本号统一 v1.3.4:README / root.ps1 横幅与诊断清单 / FILE_MAP 同步;
v1.3.3 release notes 归档至docs/release_notes/。
验证
- 真机连续两轮"重启 → 完整主链 → manager 三页面"全部正常:
ALL STAGES PASS、manager 主页/模块页/超级用户页均正常加载
(无 EACCES、root shell 正常存活)。 - 失败分支实测:
-WinOffsPath坏路径、无设备场景均以正确非零码退出并给出
对应报错/诊断包。
已知问题(排查提示)
- 若个别设备模块页/超级用户页仍转圈,检查
/data/user_de/0/me.weishu.kernelsu/cache/main.jar是否异常只读
(ls -l显示r--r--r--)。删除该文件后重开 manager 即可(app 会自动重新解压)。
使用
# 唯一入口(Windows):
run_root.bat
# 或:powershell -ExecutionPolicy Bypass -File root.ps1详细文档见 docs/USAGE.zh-CN.md;文件清单见 docs/FILE_MAP.zh-CN.md。
GhostLock-X200 v1.3.3
GhostLock-X200 v1.3.3
本版说明
- v1.3.3 为 v1.3.2 的稳定性修复版,功能全貌见
release_notes_v1.3.0.md;
本版仅列出相对 v1.3.2 的修复。
修复(相对 v1.3.2)
- STAGE4/5 cred 候选质量修复(核心):
- 根因:w2host 采样候选采用"3 轮交集 + 无条件并集",单轮出现的
候选(已释放/临时/非本进程 cred)会混入 → STAGE5 盲写该假候选破坏
slab 对象 → 下一轮设备 panic/watchdog(10:04 实机实证:ROUND 1 全 0、
ROUND 2 假候选 miss、ROUND 3 设备 panic)。 - 修复:候选改为"3 轮交集 ∪ 至少 2/3 轮出现的候选",单轮候选丢弃;
STAGE5 写目标均为稳定 cred,miss 时不再破坏内核,多轮重试安全。 - 验证:真机连续 3 次 ALL STAGES PASS(1 次 ROUND 2 成功、2 次 ROUND 1
一次命中),修复前同环境下 ROUND 3 必 panic。
- 根因:w2host 采样候选采用"3 轮交集 + 无条件并集",单轮出现的
- 版本号同步 v1.3.3:root.ps1 启动横幅与诊断清单此前仍显示 v1.3.1,
现已统一(README / FILE_MAP 同步)。
使用
# 唯一入口(Windows):
run_root.bat
# 或:powershell -ExecutionPolicy Bypass -File root.ps1详细文档见 docs/USAGE.zh-CN.md;文件清单见 docs/FILE_MAP.zh-CN.md。
GhostLock-X200 v1.3.2
GhostLock-X200 v1.3.2
本版说明
- v1.3.2 为 v1.3.1 的修复版,功能全貌见
release_notes_v1.3.0.md;
本版仅列出相对 v1.3.1 的新增。
修复(相对 v1.3.1)
- detect-p0 主链集成修复:机型精确命中时主链成功后自动获取 P0 物理常量
原本必然失败(脚本路径变量仅在部分分支赋值),现改为全分支可用,并显式
指定设备串号、失败 3 秒后自动重试一次、失败时输出真实原因(不再静默)。 - adb 路径兼容:自动提取脚本的 adb 调用优先使用
ANDROID_ADB环境变量
(root.ps1 已设置),未设置时回落 PATH,避免 adb 不在 PATH 时失败。
改进(相对 v1.3.1)
- 设备稳定等待(uptime>240s):等待期间每 30 秒打印进度提示;支持按
S键跳过、run_root.bat -SkipUptimeWait参数跳过或运行中询问确认跳过,
并明确提示"设备未稳定可能导致内核 panic"(仅建议在设备已稳定时跳过)。 - 设备重启等待上限:主链失败后等待设备重启回来由 12 分钟缩短为
3 分钟(panic 后重启通常 1-2 分钟),等待期间打印进度,上线即继续。
使用
# 唯一入口(Windows):
run_root.bat
# 或:powershell -ExecutionPolicy Bypass -File root.ps1详细文档见 docs/USAGE.zh-CN.md;文件清单见 docs/FILE_MAP.zh-CN.md。
GhostLock-X200 v1.3.1
GhostLock-X200 v1.3.1
本版说明
- v1.3.1 为发布机制修复版:功能代码与 v1.3.0 完全一致,v1.3.0 已包含
多机型通用管线、离线恢复、P0 自动获取、KMI 自动重打、win_offs 去
vmlinux-to-elf 依赖等全部能力,详见release_notes_v1.3.0.md。 - 本版仅列出相对 v1.3.0 真正新增的内容,不再重复罗列 v1.3.0 已发布的修复项。
新增(相对 v1.3.0)
- 同版本号禁止覆盖:
publish.py检测到 tag / GitHub Release 已存在时
直接拒绝并提示递增版本号(不再删除旧资产重建),彻底杜绝"同版本号反复
重新打包发布、旧下载者无法感知更新"的问题。 - 版本标识统一 v1.3.1:root.ps1 启动横幅与异常诊断清单、README、
FILE_MAP 中的版本号同步更新。
使用
# 唯一入口(Windows):
run_root.bat
# 或:powershell -ExecutionPolicy Bypass -File root.ps1
# 一键发布 (重编二进制 + 打包 + 校验 + 提交推送 + GitHub Release):
python publish.py [--version v1.3.1] [--dry-run]详细文档见 docs/USAGE.zh-CN.md;文件清单见 docs/FILE_MAP.zh-CN.md。
GhostLock-X200 v1.3.0
GhostLock-X200 v1.3.0
本版定位
- 在上一版(v1.1.0)基础上,完成多机型通用化:
任意 vivo/iQOO(及同内核族设备)提供 boot.img / 全量包 zip / payload.bin /
kernel.raw / kernel.elf 素材,即可全自动生成可分享的机型模块并尝试 root,
无需已 root 设备、无需 vmlinux-to-elf、无需手动编译 exploit。 - 机型参数与偏移产物收敛为可分享模块(
devices/<机型名>/),他人导入后
同内核自动精确命中,零提取直接使用。
新增
多机型通用管线
- 机型模块化 + 可分享:
devices/<机型名>/自包含 device.json + 偏移产物 +
manifest(SHA256 校验);设备在线按/proc/version自动匹配(精确 / 同族 /
未收录三态);未收录机型自动提取并生成新模块,可打包分享。 - 机型可行性预检:素材选择后输出 推荐 / 可尝试 / 不推荐 + 逐项原因,
覆盖 init_boot 误选(kernel_size=0)、内核族、SoC、PANIC_ON_OOPS 等;
MTK 未知族明确提示不推荐(附社区失败证据)。 - 离线恢复(无设备):仅凭素材离线恢复 kallsyms + BTF(6.1 / 6.6 / 6.12
分支),无设备也能生成全部偏移与 target header。 - pselect 栈布局自动推导:反汇编 pselect/futex 调用链自动得出
PSELECT_WAITER_WORD_SHIFT(b57 实测 = 0,与真机一致),不再手动固化。 - P0 物理常量自动获取:root /proc/iomem → 设备 devicetree(非 root)→
素材 DTB → 待填,四级自动填充链;含 6 项反向校验。
新机型流程闭环
- win_offs 去 vmlinux-to-elf 依赖:内核 Image 直反汇编(capstone + 离线
kallsyms)复现偏移,与 ELF 路径产物全等;vmlinux-to-elf 降级为可选。 - 新机型流程 package 主导:素材 → 可行性预检 → 自动提取全套 → 机型模块,
不再被 vmlinux-to-elf 缺失卡死;task_cred_off由素材 BTF 自动推导
(不同构建不同,如 0x820 / 0x8c8)。 - KMI 自动触发:模块生成后自动按模块
kernel_release重打
kernelsu.ko / permissive_restore.ko 的 vermagic;-KernelRelease保留手动覆盖。 - 非 b57 prebuilt 门禁:主链优先使用机型模块自带产物;非 b57 且无产物时
询问后默认不跑(避免 b57 预编译偏移硬编码导致的失败/panic),提示按机型重编译。
编译自动化
- exploit 自动编译:非 b57 门禁处询问后自动用 WSL kali NDK(或自动下载
Android NDK r28)按机型模块 target.h 编译glt_esync并放入模块;与历史
构建同链(重编 w2host 与仓库产物 SHA256 全等)。 - w2host 运行时自适应澄清:w2host 采样窗口/候选范围已运行时注入
(W2_CRED_IPS / W2_CAND_MIN / W2_DIRECT_END 等),无需按机型重编译,
直接复用仓库 prebuilt。
修复
- vivo boot 头 page_size=0:内核段定位失败导致
内核缺少 arm64 Image magic
(unpack_boot.py / offline / winoffs-image 均修复,真实 OTA boot.img 验证)。 - prebuilt 二进制与源码同步重编:发布流程改为每次用当前源码重编
prebuilt/glt_esync/prebuilt/w2host(WSL kali NDK),不再沿用旧二进制;
源码含 STAGE2(kptr 写)watchdog 修复(words[0] 必须 RED 防
____rb_erase_color在垃圾树上旋转),干净状态真机验证:STAGE1→2 不再
watchdog,STAGE2 miss 安全重试,全链路 ALL STAGES PASS 且设备稳定。 - 裸内核 Image(.img 无 ANDROID! 头)素材误判为 boot.img 导致解包失败。
- detect-p0 低端 System RAM 小块导致 phys_offset 误算为 0x0(改为基于内核
加载所在 RAM 块推导)。 - detect-p0 多设备去重:USB + 无线同一物理设备时按 ro.serialno 自动选用
(主链成功后的自动 P0 获取不再失败)。 - run_root.bat CRLF + ASCII 注释:修复 LF 行尾 + UTF-8 中文注释导致 cmd
把注释碎片当命令执行('閫夊弬鏁伴€忎紶' is not recognized)。 - 多设备自动选择:同一物理设备 USB + 无线双连接时自动选用 USB,
不再误报"检测到多台设备"。 - P0 待填模块导入即报错:
load_profile允许 P0 null(待填态),模块分享
闭环不再中断。 - --help / 未知子命令 报 TypeError(改友好报错)。
- 重复参数 -KsuKoPath 传递导致 PowerShell 绑定失败。
已知边界
- 内核模块(kernelsu / permissive_restore)真正重编仍需同构建内核源码
(modversions ABI);vermagic 重打已自动,非同构建 insmod 可能失败。 - 仅 X200 (PD2415) b57 真机完整验证(STAGE1-7 全通过);X200s 同内核
(内核 SHA256 全等)偏移交叉验证一致,但未实体机实测;其余机型为素材级
自动适配,需实体机验证。 - 6.1 / 6.12 分支离线恢复实现完成,待对应内核素材实体验证。
使用
# 唯一入口(Windows):
run_root.bat
# 或:powershell -ExecutionPolicy Bypass -File root.ps1
# 一键发布 (重编二进制 + 打包 + 推送 + GitHub Release):
python publish.py [--version v1.3.0] [--dry-run]
# 生成/分享/导入机型模块:
python tools\offset_tools\offsets_auto.py package C:\path\boot.img --out devices\my_device
python tools\offset_tools\offsets_auto.py verify-device my_device详细文档见 docs/USAGE.zh-CN.md;文件清单见 docs/FILE_MAP.zh-CN.md。
GhostLock-X200 v1.1.0
GhostLock-X200 v1.1.0
本版定位
- 以 README「支持的设备」所列机型(b57 内核)为参考实现,同时面向自行二次
开发适配其他机型:偏移全程从设备实时提取(kallsyms + BTF + 反汇编),不依赖
硬编码地址;配合本版新增的异常重启诊断,可在非官方支持机型上强行尝试,
并自动收集可供分析的完整日志,作为二次开发的调试依据。 - 非官方支持机型 = 允许尝试,风险自担:工具不会阻止运行,但最终能否 root
取决于目标机型/内核的适配程度,请先阅读下方「非支持机型使用与二次开发」。
修复(关键)
- WSL 路径转换修复:旧版仅在系统临时目录位于特定盘符时生效,其余场景
vmlinux-to-elf在 WSL 里打不开kernel.raw,导致误报
[X] vmlinux-to-elf 转换失败 (无输出 kernel.elf)。新版支持任意盘符自动转换为
/mnt/<盘符>/,已在真实内核上复现旧问题并验证修复。 - 误选无内核镜像提示:kernel.raw 过小(<1MB)时明确提示改选
boot.img
(payload 的 boot 分区)或全量包 zip,而不是报看不懂的转换失败。 - unpack_boot.py:镜像中无内核(
kernel_size==0)时提前报错提示。
新增
- 全量日志:默认自动写入
%TEMP%\ghostlock_root_<时间戳>.log,各步骤原始输出
(payload 提取 / unpack_boot / vmlinux-to-elf / winoffs)全部落盘;失败时控制台
直接打印原始输出最后 20 行,不再吞错。可用-NoLog关闭,-LogPath指定路径。 - run_with_log.bat:兼容旧版 release 的日志采集器,放在 root.ps1 同目录双击
运行,日志固定写到桌面ghostlock_log.txt,末尾pause防止闪退
(PowerShell 5.1 下需 Start-Transcript 才能捕获 Write-Host 输出)。 - 异常重启诊断(自动):主链失败后自动判断设备是否异常重启(panic/watchdog),
并采集诊断日志打包为ghostlock_diag_<时间戳>.zip:含机型/内核/启动原因、
pstore(panic 瞬间内核日志)、MTK AEE 清单、每阶段运行标记、root 级日志快照
(到达 root 阶段时自动 dump 完整 dmesg/内核 logcat/模块/selinux 状态)、
host 完整运行日志。zip 内为 AI 可读格式(00_manifest.json 索引 +
99_READ_ME.txt 阅读指南),运行结束会给出指引:将该 zip 发送给维护者/Agent 分析,
或自行用于二次开发调试。采集全程只读、仅在主链退出后执行、不读写流式节点,
不会引发 panic;可用-NoPanicDiag关闭。 - 依赖打包分发:
-DepsInPackage(或-DepsDir <目录>)可让 adb /
payload-dumper-go 等依赖下载到项目根目录随包分发,方便做离线包;默认仍兼容旧的
%LOCALAPPDATA%\GhostLock-X200\deps位置,新旧位置都会自动识别,
payload-dumper-go 不会重复下载。 - adb 智能定位:找不到 adb 时自动按更多位置探测(PATH / Android SDK /
Android Studio / Scoop / Chocolatey / WinGet 包目录 / 包内 platform-tools /
依赖目录 / 有界递归搜索),并对每个候选执行adb version校验,跳过残缺或
非官方文件;主链与一键脚本共用同一套探测逻辑(tools/scripts/find_adb.ps1)。 - 素材类型支持新增
.raw(kernel.raw 可直接作为输入,跳过解包环节)。
非支持机型使用与二次开发(请先阅读)
- 允许强行尝试:非官方支持机型可直接运行本工具,脚本会自动从素材
(全量包 zip / payload.bin / boot.img / kernel.raw / kernel.elf)重建偏移,
无需任何额外参数;若内核构建检测失败,可用-Force跳过 build 检测直接运行
随包偏移(仅建议同内核构建场景,风险自担)。 - 预期会失败的点:预编译内核模块(kernelsu.ko / permissive_restore.ko)的
vermagic 为目标内核专用,其他内核构建无法insmod加载;偏移生成工具也含
目标内核实证硬编码值(如 task_cred_off)。这些均属预期行为,说明需要按
目标内核重新编译/适配模块(二次开发),不保证直接可用。 - 调试路径:运行中出现异常重启(panic/watchdog,可恢复、无变砖风险前提)时,
工具会自动打包ghostlock_diag_<时间戳>.zip;zip 内 pstore 记录了 panic 瞬间
内核日志,运行标记(glt_seq_*)定位 panic 前最后动作,host 日志定位失败阶段,
可据此判断是机型不兼容还是适配进度问题。 - 适配参考:offset_tools(kallsyms/BTF/反汇编)与主链均为设备侧动态提取,
二次开发时重点核对 BTF 结构偏移与模块 vermagic。
已知限制
- 官方支持机型与内核前提见 README.md「支持的设备」。
vmlinux-to-elf依赖:Windows 下pip install vmlinux-to-elf,或 WSL
kali-linux 中pip3 install vmlinux-to-elf(推荐,转换更快更稳)。
vivo X200 GhostLock Root v1.0.0
v1.0.0 首个公开版本。
基于 GhostLock / CVE-2026-43499,针对 vivo X200(PD2415)做的临时 Root 适配,包含完整利用链、KernelSU 加载、permissive_restore 以及偏移/ko 处理工具。
目前实机测试环境:
- vivo X200 / PD2415
- OriginOS 16.1.12.2.W10
- Kernel:
6.6.89-android15-8-gb57af212129c
使用
下载下方 ghostlock-x200-root-v1.0.0.zip,解压后阅读 README,手机开启 USB 调试并授权,然后运行根目录的 root.ps1。
Release 包已经包含运行所需的 glt_esync、w2host 和 ksud,不需要再单独下载。
注意
这是临时 Root,重启后失效,不需要解锁 Bootloader。
目前只对上面的 X200 环境做过完整实机测试,其他系统版本和其他设备不保证能够直接运行。仓库中保留了利用源码、偏移提取和 ko 处理工具,可供自行适配时参考。
Root / 内核操作存在风险,操作前请备份重要数据。