2

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

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()
      }
}
4

1 回答 1

2

你可以使用 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.. .)

于 2016-09-15T07:12:24.773 回答