在 Magisk 出现之前,Xposed 框架极大地塑造了与设备无关的 Android 改装方法。无需反编译应用程序、修改零碎、重新编译并将修改后的文件推送回我们的设备,我们可以在运行时使用 Xposed 和专用模块替换任何类中的任何方法。该框架本质上是在启动时加载附加 JAR 文件的修改,它允许开发人员挂钩到Zygote 进程并可以在其上下文中操作。/system/bin/app_process
由于 Magisk 提供了一种基于覆盖的修改机制(通常称为“无系统”),理论上可以创建一个 Magisk 模块来修补 Zygote 进程,而无需对app_process
可执行文件进行物理修改。这就是里鲁进来的地方。
Riru由两个名为Rikka和yujincheng08的开发人员创建,是一个特制的Magisk 模块,无需安装旧式 Xposed 框架即可提供 Xposed 式的功能。它注入 Zygote 以允许其他模块在应用程序或系统服务器中运行它们的代码。
Riru 的初始实现依赖于替换名为libmemtrack
. 然而,该方法后来被放弃,取而代之的是一种称为“本地桥”的系统属性()。通过利用该属性,开发人员可以动态加载和卸载他们选择的共享库,最终导致注入到 Zygote 进程中。ro.dalvik.vm.native.bridge
如前所述,Riru 可作为 Magisk 模块使用。由于 Magisk 应用程序不再附带内置模块浏览器,因此您需要直接从其 GitHub 存储库下载 Riru。
下载 Riru
下载发布 ZIP 文件后,您可以使用 Magisk 应用程序安装它。
如果一切正常,您可以在重新启动后在 Magisk 应用程序的模块选项卡下看到 Riru。
Riru 本身只是其他模块与 Zygote 进程挂钩的入口。因此,您需要通过 Magisk 应用程序安装与 Riru 兼容的模块,就像任何其他 Magisk 模块一样。成功安装后,Riru 模块将与 Magisk 应用程序中的 Magisk 模块一起列出。然后,您可以打开特定于模块的配置前端来修改其参数。对于没有接口的模块,您可以简单地继续使用您修改后的 Android 实例,Riru 将在后台处理所有事情。
在较新版本的 Magisk 上,您可能会遇到由于 Zygisk 的存在而在安装后禁用 Riru 的情况。
这种冲突背后的原因很简单。Zygisk(例如 Zygote 中的 Magisk)是 Riru 的精神继承者。开发人员topjohnwu(即 Magisk 的创建者)和其他几位开发人员一直在研究的无系统界面的演变。由于 Riru 和 Zygisk 都针对 Android Zygote 进程,因此这两者不能同时存在。但是,您可以从 Magisk 的设置中禁用 Zygisk,重新启动设备,然后启用 Riru。