Xposed - 返回类构造函数

时间:2018-04-07 17:02:32

标签: xposed

解压缩方法:

private static l c(String str, String str2, String str3, String str4) {
    l lVar;
    k kVar = (k) m.get(str);
    j jVar = (j) l.get(str);
    if (kVar != null) {
        lVar = new l(kVar, str2, str3);
    } else if (jVar != null) {
        lVar = new l(jVar, str2, str3);
    } else {
        lVar = new l(j.GENERIC, str2, str3);
    }
    lVar.a(str4);
    return lVar;
}

如何使用Xposed返回具有特定值的新l(jVar,str2,str3)? 我的代码的开头是:

    try {
        findAndHookMethod("com.xiaomi.hm.health.ui.smartplay.h", lpparam.classLoader, "c", String.class, String.class, String.class, String.class, new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) {
                String pkg = (String) param.args[0];
                if (pkg == "com.perm.kate_new_6"){
                    return ???;
                }
            }
        });
    } catch (Throwable t) {
        t.printStackTrace();
    }

1 个答案:

答案 0 :(得分:0)

XC_MethodHook的{​​{1}}方法需要返回void。即,需要通过afterHookedMethod的{​​{1}}方法来设置钩子方法的返回。

在内部,它将XC_MethodHook设置为returnEarly,在setResult中检查,阻止原始方法代码执行,以及方法上的任何其他挂钩。

如果您只想访问最初要返回的方法,那么XposedBridge应该这样做。

如果你需要返回任何其他东西,你可以使用反射或Xposed的助手(getResult())来检索l,k和j类,在需要时复制代码,创建一个新实例并通过{返回它{1}}。或者,您可以使用true钩子,因为您可能会复制其功能。