Xposed 框架有两个问题:
- 如果我要 Hook 的方法在动态加载的dex中,这意味着dex在运行时由DexClassLoader或PathClassLoader加载,Xposed会抛出ClassNotFound异常。那么如何在这样的dex文件中hook一个方法呢?
- 如果我想 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/