Skip to content

基础知识和常见问题

5ec1cff edited this page Dec 11, 2024 · 5 revisions

This page is in Chinese. Click here to view the English version.

基础知识

ZygiskNext 是什么?

ZygiskNext 的前身是 ZygiskOnKernelSU ,该项目的最初目的是为了以 Magisk 模块的形式在 KernelSU 中实现 Magisk 中的 Zygisk 功能,即向 Zygote 进程(也就是负责产生所有 App 进程的进程)注入代码的功能。

现在的 ZygiskNext 的主要工作方向是探索更好的 zygote 注入方式,以及研究 zygote 之外的进程的注入。

ZN 是什么?

ZygiskNext 的简称。下文中可能会用 ZN 简称 ZygiskNext 。

ZygiskNext 的简称是什么?

ZN. 请在讨论或反馈时不要发明「zy」「zyg」这种没有辨识度的简称。

ZygiskNext 可以运行在什么环境?

  1. Root 实现

目前 ZygiskNext 可以以 Magisk 模块的形式运行在 KernelSU 、Magisk 和 APatch 上,Magisk 用户需要禁用内置 Zygisk 才能使用 ZygiskNext 。

未来可能以 Magisk 模块之外的形式呈现

  1. 处理器架构

运行 ZN 需要 arm64, x86-64 或 armeabi-v7a 架构。因此 ZN 可运行在 arm64, arm32(armv7l, armv8l) 真机与 x64 模拟器上,32 位的 x86 暂不支持。

Zygisk 功能支持 arm64 / arm32 / x64 / x86 ,也就是支持向 64 位和 32 位 zygote 注入代码。

一些纯 64 位而使用转译模拟 32 位的系统也可以支持,目前已知 tango 转译是支持的。

ZygiskNext 有什么用处?

当前最主要的用处还是在三大 Root 实现(Magisk,KernelSU,APatch)中实现更好的 Zygisk 功能。流行的 Zygisk 模块包括 LSPosed 、SR(存储空间隔离增强)、PIF 等。

自 ZN 1.2.0 起增加了 Zygisk Next 模块,可以对更多系统进程进行修改。

ZygiskNext 相比 Zygisk 有什么优势?为什么要在 Magisk 上使用 ZygiskNext ?

作为独立模块的 ZygiskNext 相比 Zygisk 更具灵活性,且 ZygiskNext 的开发者仍在不断探索更好的注入方式和开发新功能(如 Zygisk Next Module)。此外,ZygiskNext 的隐蔽性相比原版 Zygisk 也更好。

ZygiskNext 中的 Root 实现有什么用?

为了实现与原版 Zygisk 一致的「排除列表」功能,ZygiskNext 需要知道当前的 Root 实现是 Magisk, KernelSU 还是 APatch ,并根据具体情况获取它们的「排除列表」。

常见问题

排除列表类

Magisk 的排除列表在哪?

顾名思义,Magisk 的排除列表在 Magisk 的排除列表中。(在设置中)

虽然 Magisk 的排除列表为 Zygisk 设计,但即使不启用 Zygisk ,Zygisk Next 也能读取这个排除列表。

原版 Magisk 可能需要临时打开 Zygisk 开关以便进入排除列表的配置页面,在完成配置后再关上 Zygisk 开关即可。Magisk Alpha 可以在 Zygisk 未启用的情况下配置排除列表。

由于使用了一些魔法手段更高效地获取排除列表,因此在一些与原版 Magisk 差距较大的改版中 ZN 可能无法正确获取排除列表。

KernelSU 的排除列表在哪?

在 KernelSU 对 App 的配置中,「卸载模块」开关就是 App 是否处于「排除列表」的开关。

同时,KernelSU 还有一个「默认卸载模块」开关,打开它意味着所有 App ,只要没有 Root 权限,则默认是在排除列表中的;反之,关闭开关则默认不在排除列表中。

APatch 的排除列表在哪?

与 KernelSU 类似。

「遵守排除列表」是什么意思?

与 Magisk 的「遵守排除列表」行为一致,即在「排除列表」的 App 不会被加载 Zygisk 模块,并且在其进程空间卸载 Magisk 模块,以「排除 Magisk 模块带来的影响」。

虽然如此,实际上很多影响并不能简单地通过这些方法排除,因此将该功能视作「隐藏 Root」也是不正确的,它只是为了与 Magisk 实现一致而存在的。

如何启用或禁用「遵守排除列表」?

你可以通过 WebUI 中的开关启用或禁用它。对于 KernelSU 和 APatch ,WebUI 功能是内置于管理器的,对于 Magisk ,可以使用 KsuWebUIStandalone 访问模块的 WebUI 。

你也可以在 Root 终端使用命令 znctl enforce-denylist enabled 启用它,使用命令 znctl enforce-denylist disabled 禁用它。

为什么我启用「遵守排除列表」后,我的 Xposed / Zygisk 模块失效了?

如上所述,启用「遵守排除列表」后,处于「排除列表」的 App 将不会被加载任何 Zygisk 模块,依赖于 Zygisk 的 Xposed 模块也无法加载。你可以将需要加载模块的 App 移出「排除列表」,或者对于 KernelSU 用户,请检查「默认卸载模块」是否启用,启用它会导致 App 默认处于「排除列表」中,除非你手动指定。

我是否需要启用「遵守排除列表」?

如果你认为或发现启用它能够达到你的目的(如所谓「隐藏 Root」),则可以启用。

Root 实现类

Root 实现为 Multiple 是什么意思?

这表示 ZygiskNext 发现你的设备安装了多个 Root 实现,如 Magisk 与 KernelSU 同时安装。

Root 实现为 Multiple 有什么后果?

由于 ZygiskNext 无法确定你的 Root 实现是哪一个,因此「排除列表」不会生效。

我是 Magisk / APatch 用户,我明明没有安装 KernelSU ,为什么还是有多个 Root 实现?

你的内核提供者可能集成了 KernelSU ,这常见于第三方系统,请联系你的内核提供者获取未集成 KernelSU 的内核。

ZN 1.2.2 起,ZN 检测到 KernelSU 的存在当且仅当 KernelSU 被同时安装在内核与用户空间。用户空间安装了 KernelSU 的判断准则是文件 /data/adb/ksud 存在,即删除该文件会阻止 ZN 识别 KernelSU 。因此系统的内核存在 KernelSU 而不使用 KernelSU 的用户只要确保不安装 KernelSU App ,应该不会遇到上述问题。

我是 Magisk 用户,为什么 Magisk App 首页的 Zygisk 状态显示为「否」?

因为你安装了多个 Root 实现或 ZygiskNext 未检测到你的 Magisk (可能是使用第三方 Magisk)。

什么是 magisk compat ?

为了使 ZN 在 Magisk 上正确运行,用户需要关闭 Magisk 的内置 Zygisk 。而由于 Magisk 的内置 Zygisk 关闭后,Zygisk 模块将不再加载,不仅不加载 Zygisk lib ,也不会挂载文件、应用 system.prop 。因此 ZN 使用了一些手段代替 Magisk 处理这些工作,这些手段统称为 magisk compat 。

模块信息类

Failed to inject init 是什么意思?

该问题在较新版本不应该出现。如果你是 Magisk 用户,请检查你的 Magisk 是否环境正常,即打开 Magisk app 是否提示修复环境,如有,请按照提示修复。如果你没有上述问题,请提交 issue 。

Zygote crashed 是什么意思?

可能是你安装的 zygisk 模块导致了 zygote 崩溃,并触发 ZygiskNext 的安全模式。请逐一禁用以进行排查,如非模块问题请提交 issue 。

Module Corrupted 是什么意思?

请不要修改 ZygiskNext 模块目录下的文件。

Root 实现后的 DE 是什么意思?

表示「遵守排除列表」被启用。