最近听到太极 magisk 的消息,很好奇它的原理,今天搜索了一下,居然发现了另一个 hook 框架
Riru:
https://github.com/RikkaApps/Riru
至于原理,介绍上说通过替换一个会被 zygote 进程加载的共享库 libmemtrack.so 从而实现注入
按照我的大概理解,注入得将自己的代码加到 zygote 创建 app 进程那一段里面去吧,那段代码应该在 libuart 里吧,要不然代码怎么进去。Riru 选择一个简单的 libmemtrack 为何也能注入到 app 进程
如果这样就能注入,那和 xposed 有什么不一样吗,为何 xposed 这么出名而 Riru 却知道的人不多
我只作为一个搞机发烧友来提问,没研究过 hook,真的很好奇,希望有大神科普一下
1
66beta 2019-01-16 16:02:24 +08:00 via Android
我大魅族不开放 BL,只能用 xposed
|
2
aWangami 2019-01-16 16:06:50 +08:00
主要还是易用性吧
|
3
cyhulk 2019-01-16 16:10:18 +08:00
我只知道当年写 Xposed 的时候,7.0 的 xposed 还不知道,当时也搜了这个,但是没有过多了解,等过了一段时间 7.0 的就出来了,然后就没有关注了。我只写过 xposed 的。
|
5
alvin666 2019-01-16 16:13:37 +08:00 via Android
看生态了,不同 hook 历史不一样,就和塞班,wp,安卓,苹果一样
现在 xp 开发者最多,第二是 magisk |
6
jdgui 2019-01-16 16:14:43 +08:00
因为 libmemtrack 会被 zygote 加载。所以你在 libmemtrack 中的修改等于在 zygote 修改。
|
10
7sDream 2019-01-16 16:44:02 +08:00
|
11
jdgui 2019-01-16 18:15:38 +08:00
@photonvx #9 https://github.com/RikkaApps/Riru/blob/master/riru-core/jni/main/init.cpp
看代码是对 nativeForkAndSpecialize 和 nativeForkSystemServer 进行 hook。这样就可以在每个进程中执行了。 libmemtrack 里面的方法不需要和创建进程相关,而是通过 libmemtrack 调用自己写的 hook 代码,从而达到目的。 |
13
zeroDev 2019-01-16 19:50:05 +08:00 via Android
因为 riru 是刚出来的
|
14
RikkaW 2019-01-16 20:52:31 +08:00 via Android 1
Riru 不是 hook 框架
只有进去应用进程和系统服务进程 进去之后做什么要使用的人自己发明( |
16
lateautumn4lin 2021-04-27 10:57:55 +08:00
@jdgui 真相了
|