这是一个多索引 apk。我想在类 defpackage.bky 中挂钩一个方法,如下图所示。
我尝试如下挂钩 Application.class “attach” 方法,但失败:“java.lang.ClassNotFoundException:在路径上找不到类“defpackage.bky”。
XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { ClassLoader cl = ((Context)param.args[0]).getClassLoader(); Class<?> hookclass = null; try { hookclass = cl.loadClass("defpackage.bky"); } catch (Exception e) { Log.e("MtwmXposed", "寻找defpackage.bky报错", e); hookclass = null; } if(hookclass != null) { Log.i("MtwmXposed", "寻找defpackage.bky成功"); XposedHelpers.findAndHookMethod(hookclass, "a", JSONObject.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { super.beforeHookedMethod(param); JSONObject shop_info = (JSONObject) param.args[0]; Log.d("MtwmXposed", "From defpackage.bkt.a: " + shop_info.toString(2)); } }); } } });
我还尝试如下挂钩 ClassLoader.class "getClass" 方法,但也没有找到 defpackage.bky。
XposedHelpers.findAndHookMethod(ClassLoader.class, "loadClass", String.class, new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { super.afterHookedMethod(param); if (param.hasThrowable()) return; Class<?> cls = (Class<?>) param.getResult(); String name = cls.getName(); Log.d("MtwmXposed", "class name = " + name); if (name.equals("defpackage.bky")) { Log.i("MtwmXposed", "寻找defpackage.bky成功"); XposedHelpers.findAndHookMethod(cls, "a", JSONObject.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { super.beforeHookedMethod(param); JSONObject shop_info = (JSONObject) param.args[0]; Log.d("MtwmXposed", "From defpackage.bkt.a: " + shop_info.toString(2)); } }); } } });