gpt4 book ai didi

java - Xposed如何在Android中进行hooking

转载 作者:行者123 更新时间:2023-11-30 01:10:07 26 4
gpt4 key购买 nike

我正在尝试了解 Xposed 如何执行 Hook 部分,它为用户提供了 API 以非常轻松地 Hook 任何方法。

我已经浏览了 Xposed Bridge 的源代码,这个 jar 文件驻留在每个进程启动时。我还发现他们正在使用 java 反射来获取类方法、参数等,以通过 JNI 将其传递给 native 方法。

有一件事,我无法弄清楚 Xposed 如何 Hook 进程并能够完全控制它。

我试图弄清楚 Hook 是发生在 XposedBridge jar 文件内的 Java 端,还是发生在 native 代码的 ART 级别。

最佳答案

好问题。 XPosed 通过修改 app_process 文件来工作,该文件是 ART VM,之前是 Dalvik VM。

这个新修改的 ART/Dalvik VM 将在执行时加载 XPosedBridge.jar 文件以及已在系统中注册的所有 xposed 模块。现在,这只会发生一次,因为 Android 的工作方式是从头开始创建一个 Java VM(称为 Zygote),然后每次启动应用程序时,都会为新应用程序 fork 此 VM,使其拥有自己的 VM。

此外,这个修改后的 ART/Dalvik VM 将在 Zygote 的 fork 函数之后添加一个回调,以允许它触发所有拦截 packageOnLoad 事件的 xposed 模块代码。

最后,为了允许它拦截单个类的方法,XposedBridge(这是您在创建 xposed 模块时使用的库)中的 hookMethod 功能将修改 VM 中的 native 类结构,即为您尝试 Hook 的特定类定义,以便将您尝试 Hook 的方法的方法指针重定向到新的替换方法。

关于java - Xposed如何在Android中进行hooking,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38504544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com