V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
photonvx
V2EX  ›  Android

今天搜索了一下 android hook 后,发现不止 xposed 一家

  •  
  •   photonvx · 2019-01-16 15:57:51 +08:00 · 14061 次点击
    这是一个创建于 2138 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近听到太极 magisk 的消息,很好奇它的原理,今天搜索了一下,居然发现了另一个 hook 框架

    Riru:

    https://github.com/RikkaApps/Riru

    至于原理,介绍上说通过替换一个会被 zygote 进程加载的共享库 libmemtrack.so 从而实现注入

    按照我的大概理解,注入得将自己的代码加到 zygote 创建 app 进程那一段里面去吧,那段代码应该在 libuart 里吧,要不然代码怎么进去。Riru 选择一个简单的 libmemtrack 为何也能注入到 app 进程

    如果这样就能注入,那和 xposed 有什么不一样吗,为何 xposed 这么出名而 Riru 却知道的人不多

    我只作为一个搞机发烧友来提问,没研究过 hook,真的很好奇,希望有大神科普一下

    16 条回复    2021-04-27 10:57:55 +08:00
    66beta
        1
    66beta  
       2019-01-16 16:02:24 +08:00 via Android
    我大魅族不开放 BL,只能用 xposed
    aWangami
        2
    aWangami  
       2019-01-16 16:06:50 +08:00
    主要还是易用性吧
    cyhulk
        3
    cyhulk  
       2019-01-16 16:10:18 +08:00
    我只知道当年写 Xposed 的时候,7.0 的 xposed 还不知道,当时也搜了这个,但是没有过多了解,等过了一段时间 7.0 的就出来了,然后就没有关注了。我只写过 xposed 的。
    photonvx
        4
    photonvx  
    OP
       2019-01-16 16:12:50 +08:00
    @66beta 哈哈,有开放 root 就行
    alvin666
        5
    alvin666  
       2019-01-16 16:13:37 +08:00 via Android
    看生态了,不同 hook 历史不一样,就和塞班,wp,安卓,苹果一样
    现在 xp 开发者最多,第二是 magisk
    jdgui
        6
    jdgui  
       2019-01-16 16:14:43 +08:00
    因为 libmemtrack 会被 zygote 加载。所以你在 libmemtrack 中的修改等于在 zygote 修改。
    photonvx
        7
    photonvx  
    OP
       2019-01-16 16:14:46 +08:00
    @cyhulk 难道是因为 xposed 的生态建起来了,所以就越来越出名,底层技术达到的效果不知道一不一样
    photonvx
        8
    photonvx  
    OP
       2019-01-16 16:15:29 +08:00
    @alvin666 也有可能
    photonvx
        9
    photonvx  
    OP
       2019-01-16 16:19:36 +08:00
    @jdgui 如果 libmemtrack 和创建进程没关系在里面怎么修改都没用啊
    jdgui
        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 代码,从而达到目的。
    catalina
        12
    catalina  
       2019-01-16 19:05:23 +08:00
    作者 @RikkaW
    zeroDev
        13
    zeroDev  
       2019-01-16 19:50:05 +08:00 via Android
    因为 riru 是刚出来的
    RikkaW
        14
    RikkaW  
       2019-01-16 20:52:31 +08:00 via Android   ❤️ 1
    Riru 不是 hook 框架
    只有进去应用进程和系统服务进程
    进去之后做什么要使用的人自己发明(
    piapia
        15
    piapia  
       2019-01-30 20:27:40 +08:00
    @RikkaW #14 好像 Cydia Substrate for android 也是这个思路哎?
    lateautumn4lin
        16
    lateautumn4lin  
       2021-04-27 10:57:55 +08:00
    @jdgui 真相了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2572 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:45 · PVG 18:45 · LAX 02:45 · JFK 05:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.