代码之家  ›  专栏  ›  技术社区  ›  redice

未能在多索引apk中展开挂钩defpackage包的类

  •  0
  • redice  · 技术社区  · 6 年前

    这是一个多索引APK。 我想钩住类defpackage.bky中的一个方法,如下截图所示。

    Jadx screenshot

    Jadx screenshot image link

    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));
                                  }
                              });
                  }
      
              }
          });
      
    0 回复  |  直到 6 年前