2014-11-26 1 views
0

У меня есть две проблемы с Экспоузд Framework:Xposed: как подключить метод, который находится в динамически загруженном файле dex?

  1. Если метод, который я хочу подключить в динамически загружаемой декс, что означает, что Декс загружается DexClassLoader или PathClassLoader на счете, Xposed бросает ClassNotFound исключение. Итак, как подключить метод в таком файле dex?
  2. Если метод, который я хочу подключить, имеет параметры пользовательского типа, например findAndHookMethod("com.XXX.XXX.XXX", lpparam.classLoader, "getXXX", CustomType.class, new XC_MethodHook() { Eclipse сообщает мне об ошибке: «CustomType не может быть разрешен». Итак, как это исправить? Должен ли я преобразовать dex в банку и поместить ее в путь сборки моего проекта?

Основание: Я пытаюсь создать модуль Xposed для подключения метода в другом приложении.

+0

пытались ли вы с помощью загрузчика классов предоставленный DexClassLoader вместо lpparam.classLoader в findAndHookMethod? – 4knahs

ответ

0

Для # 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 
    }); 
Смежные вопросы