android - Xposed : how to hook a method which is in dynamically loaded dex file?

标签 android hook dex

Xposed 框架有两个问题:

  1. 如果我要 Hook 的方法在动态加载的dex中,这意味着dex在运行时由DexClassLoader或PathClassLoader加载,Xposed会抛出ClassNotFound异常。那么如何在这样的dex文件中hook一个方法呢?
  2. 如果我想 Hook 的方法有自定义类型参数,比如 findAndHookMethod("com.XXX.XXX.XXX", lpparam.classLoader, "getXXX", CustomType.class, new XC_MethodHook() { Eclipse 给我一个错误,说“CustomType can't be resolved”。那么如何解决呢?我是否应该将 dex 转换为 jar 并将其放入我的项目的构建路径中?

背景是:我正在尝试创建一个 Xposed 模块来 Hook 另一个应用程序中的方法。

最佳答案

对于#2,使用反射为你想要的参数获取一个类对象。 Xposed 框架为此提供了一个方便的辅助方法:

    Class classCustomType = XposedHelpers.findClass("com.package.name.CustomType", lpparam.classLoader);
    findAndHookMethod("com.XXX.XXX.XXX", lpparam.classLoader, "getXXX", classCustomType, new XC_MethodHook() {
        //hook the method
    });

关于android - Xposed : how to hook a method which is in dynamically loaded dex file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27143694/

相关文章:

android - 如何使 View 50% 透明?

Codeigniter - Hook 记录 GET/POST 请求

java - 如何hook到java静态方法?

Android重新生成优化的dex文件

java - Android DEX 65k 异常 - Gradle 模块 - 还有其他想法吗?

Android:是否可以在 TextViews 9patch 背景之外设置 drawableLeft?

java - 有没有办法以编程方式请求许可?

java - 通知自定义声音不适用于某些设备

linux-kernel - 如何在 PPC Linux 上运行时 Hook 系统调用表?

java - dx.bat 上的错误类文件魔法