Не удалось Xposed Hook класс пакета defpackage в мультидексе apk - PullRequest
1 голос
/ 20 июня 2019

Это мультидекс апк.Я хочу подключить метод в классе defpackage.bky, показанном на следующем снимке экрана.

Jadx screenshot

Ссылка на снимок экрана Jadx

  1. Я попытался подключить метод «attach» класса Application.class следующим образом, но не смог: «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. Я также пытался подключить метод "getClass" ClassLoader.class следующим образом, но также не нашел 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));
                                }
                            });
                }
    
            }
        });
    
...