【问题标题】:How to call a method of a custom object passed as argument in Xposed?如何调用在 Xposed 中作为参数传递的自定义对象的方法?
【发布时间】:2016-09-14 08:24:18
【问题描述】:

在 Xposed 中,我试图调用 getResultAppCustomClass 方法 在钩子方法中作为参数传递的对象。

protected void myMethod(XC_LoadPackage.LoadPackageParam loadPackageParam) {
    final Class<?> appCustomClass = XposedHelpers.findClass("com.app.customClass", loadPackageParam.classLoader);

    findAndHookMethod("com.app.aClass", loadPackageParam.classLoader, "aMethod", appCustomClass, new XC_MethodHook() {
        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
          //How to call param.args[0].getResult()
      }
}

【问题讨论】:

    标签: android xposed


    【解决方案1】:

    你可以使用 XposedHelpers.callMethod 它有两种变体

    callMethod(Object obj, String methodName, Class[]<?> parameterTypes, Object... args)
    

    callMethod(Object obj, String methodName, Object... args)
    

    这样你就可以了

    XposedHelpers.callMethod(param.args[0],"getResult");
    

    如果需要参数就做

    XposedHelpers.callMethod(param.args[0],"getResult",arg1,arg2,arg3);
    

    注意:该方法使用 findMethodBestMatch 解决。 this("callMethod") 方法抛出的异常是 XposedHelpers.InvocationTargetError,它给出了被调用方法抛出的异常(如果有的话)。

    进一步阅读:http://api.xposed.info/reference/de/robv/android/xposed/XposedHelpers.html#callMethod(java.lang.Object,%20java.lang.String,%20java.lang.Object...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多