解压缩方法:
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();
}
答案 0 :(得分:0)
XC_MethodHook
的{{1}}方法需要返回void。即,需要通过afterHookedMethod
的{{1}}方法来设置钩子方法的返回。
在内部,它将XC_MethodHook
设置为returnEarly
,在setResult中检查,阻止原始方法代码执行,以及方法上的任何其他挂钩。
如果您只想访问最初要返回的方法,那么XposedBridge应该这样做。
如果你需要返回任何其他东西,你可以使用反射或Xposed的助手(getResult())来检索l,k和j类,在需要时复制代码,创建一个新实例并通过{返回它{1}}。或者,您可以使用true
钩子,因为您可能会复制其功能。