分享

【Magisk模块:Riru26.0.4】Riru模块的工作原理及作用!附最新下载地址!

 小原渚哥哥 2023-07-23 发布于云南


Riru模块更新了!但是好多人却不了解这个模块是干啥用的!今天就给大家详细谈谈!

图片
下载地址在文章末尾,想了解的可以看看以下内容

图片

Riru只做一件事,注入合子,以允许模块在应用程序或系统服务器中运行其代码。

要求

植根于Magisk v20.2 +的Android 6.0+设备

Magisk v20.2是第一个从模块支持预初始化Sepolicy补丁的版本,这对于Riru是必需的。

指南

安装

重要信息:在Magisk v21.1之前,您必须手动重启两次以进行首次安装。

从Magisk Manager

在Magisk Manager中搜索“ Riru”

安装名为“ Riru”的模块

Magisk版本要求由Magisk Manager强制执行。在发布Magisk v21.1时,要求是v20.4。

手动地

从下载zip(在百度晚网盘内)

在Magisk Manager中安装(模块-从存储安装-选择下载的zip)

设定档

文件/data/adb/riru/disable存在时,Riru将不执行任何操作

文件/data/adb/riru/enable_hide存在时,将启用隐藏机制(也需要模块的支持)

Riru如何运作?

如何注入合子过程?

在v22.0之前,我们使用替换将由zygote加载的系统库(libmemtrack)的方法。但是,这似乎会引起一些奇怪的问题。可能是因为libmemtrack被其他东西使用了。

然后,我们找到了一种超级简单的方法,即“本地桥梁”(ro.dalvik.vm.native.bridge)。特定的“ so”文件将由系统自动“ dlopen-ed”和“ dlclose-ed”。这是从这里来的。

如何知道我们处于应用程序进程还是系统服务器进程?

一些JNI函数(com.android.internal.os.Zygote#nativeForkAndSpecialize&com.android.internal.os.Zygote#nativeForkSystemServer)是用于派生应用程序进程或系统服务器进程的。因此,我们需要将这些功能替换为我们的功能。这部分很简单,jniRegisterNativeMethods因为所有Java本机方法libandroid_runtime.so都通过此函数注册,因此很容易上钩。然后,我们可以jniRegisterNativeMethods再次调用原始文件来替换它们。

隐藏皮的工作原理?

从v22.0开始,Riru提供了隐藏机制(Haruue Icymoon的想法),使Riru和模块的内存变为匿名内存以从“/proc/maps字符串扫描”中隐藏。

建立

重命名module.example.gradle为module.gradle

替换中的模块信息module.gradle(所有行均以“替换为您”结尾)

写你的代码

:module:assembleRelease从Android Studio或命令行运行gradle task任务,zip文件将保存在中out。

关于预制

该模板将prefab功能用于本地依赖项。预制支持是从AGP 4.0添加的,但只能在更高版本上正常使用。如果您不能或不愿意使用APG 4.1,则可以注释掉与预制件有关的零件build.gradle并riru.h从RikkaApps / Riru中复制。

档案结构

Riru模块是Magisk模块(Magisk模块文档)。

另外,当前唯一需要的文件(文件夹)是/data/adb/riru/modules/。Riru将检查它是否存在并加载/system/lib(64)/libriru_.so。

更新说明

v9,Riru v22.0

API

诸如此类的功能nativeForkAnd...不需要直接导出。唯一要导出的功能是void *init(void *)。有关更多信息,请参见init和模板的实现的注释。

具有以下优点:

模块可以支持不同的Riru版本

Riru本身不会中继“ .prop”文件(不可靠)以获取模块信息

里鲁

从v22.0开始,Riru已切换到“本机桥”(ro.dalvik.vm.native.bridge)来注入合子,这将导致Riru和稍后加载模块(LoadNativeBridgevs __attribute__((constructor)))。

对于大多数模块,这应该没有问题,但是诸如Xposed框架之类的模块可能必须进行更改。

Magisk可能会在不久的将来提供类似Riru的功能,当然,它将具有更严格的限制,模块代码不会在合子中运行。也许Xposed框架模块应该为此做准备?

Riru v22还提供了隐藏功能,以使模块的内存变为匿名内存(请参阅实现)。这是一种选择行为(module->supportHide),Riru本身也具有全局切换(/data/adb/riru/enable_hide)。

模块安装程序

RIRU_PATH已更改/data/adb/riru为隐藏目的。如果您还有其他文件/data/misc/riru,请将其移动到此处(或根据需要移动到其他位置)。

请注意/data/adb/riru,它与其他Magisk文件(由Riru在fs-data中设置)具有相同的SELinux u:object_r:magisk_file:s0。不要将上下文重置为其他内容。

下载地址

https://wwa./imh1Is1275i

(复制链接浏览器打开下载)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多