Magisk 隐藏应用残留清理方法

 技术  root  Magisk 󰈭 684字

OTA 升级后, 使用随机包名隐藏的 Magisk 应用可能因权限丢失而无法正常卸载, 同时阻止新 Magisk 正确识别 Root 状态. 本文介绍通过 ADB 命令定位和清除此类残留应用的方法.

问题背景

在使用 Magisk 解锁 Root 后, 通常还会使用 Magisk 的隐藏功能来规避国内部分软件的检测. 不过当进行 OTA 升级 + 恢复 Root 时, “随机包名” 可能会带来问题, 具体的问题产生流程如下:

  • OTA 更新前, 设备已获取 Root, Magisk 使用了 “随机包名” 隐藏自身

  • OTA 更新, 重启后丢失 Root 权限(这里不考虑 A/B 分区保留 Root 的情况)

  • 由于 Root 权限丢失, 原本的 Magisk 应用失效, 无法启动, 也无法恢复到常规包名, 仍然保持着旧的随机包名

  • 常规方法无法卸载原 Magisk 应用, 但此时仍然可以使用安装包安装一个新的 Magisk

  • 使用新的 Magisk 修补文件、恢复 Root, 一切顺利

  • 重新启动后新的 Magisk 识别不到 Root 状态, 但能够通过 adb su 获取到 root 权限

因为实质上已经获取到了 Root 权限, 只是 Magisk 无法检测到, 因此可以将问题锁定在 Magisk 相关的方向上. 恰好在经过上次的更新后, 有个老哥有一样的问题, 已经提了 <Issue #8858>.

查询过 Issue 中提及的 XDA 论坛, Magisk 有一个隐藏的 stub, 尽管 Root 失效了, 但是这个 Stub 还在, 这也就导致了新安装的 Magisk 无法读取到 Root 权限.

解决方案

使用 adb shell 查看所有的 packages: pm list packages:

通常的包都具有有意义的包名结构

找到最可疑的包, 比如 bkwvw.ns.exxzalbgb 这种一看就不符合规范且没有任何语义的包. 为了进一步确认, 可以使用一些命令来查看这个包的详细信息:

bash
1adb shell pm dump bkwvw.ns.exxzalbgb | grep -E "(firstInstallTime|lastUpdateTime|versionName|versionCode)"
2adb shell pm dump bkwvw.ns.exxzalbgb | grep -E "(applicationLabel|name)"

通过安装时间等信息, 可以进一步判定该应用是否为之前隐藏的 Magisk 应用. 确认无误后, 删除即可: adb shell pm uninstall.

注意

删除前请确认包名,避免误删系统应用或其他重要应用。

删除旧的包后, 安装新的 Magisk 应用即可正确看到 Root 权限了.

Magisk 隐藏应用残留清理方法
嗨! 这里是 rqdmap 的个人博客, 我正关注 GNU/Linux 桌面系统, Linux 内核 以及一切有趣的计算机技术! 希望我的内容能对你有所帮助~
如果你遇到了任何问题, 包括但不限于: 博客内容说明不清楚或错误; 样式版面混乱; 加密博客访问请求等问题, 请通过邮箱 rqdmap@gmail.com 联系我!
修改日志
  • 2025-07-03 16:21:20 Magisk 隐藏应用残留清理方法