2

这是一个多索引 apk。我想在类 defpackage.bky 中挂钩一个方法,如下图所示。

Jadx 截图

Jadx 截图图片链接

  1. 我尝试如下挂钩 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));
                                }
                            });
                }
    
    
            }
        });
    
  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));
                                }
                            });
                }
    
            }
        });
    
4

0 回答 0