From 77b4a86595df71b860ec5460b614f098dd75e37c Mon Sep 17 00:00:00 2001 From: klxiaoniu Date: Sat, 1 Jul 2023 13:55:28 +0800 Subject: [PATCH] fix: DisableEnterEffect for QQ 8.9.63+ --- .../java/cc/ioctl/hook/chat/DisableEnterEffect.java | 11 ++++++++++- .../java/io/github/qauxv/util/dexkit/DexKitTarget.kt | 8 ++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/cc/ioctl/hook/chat/DisableEnterEffect.java b/app/src/main/java/cc/ioctl/hook/chat/DisableEnterEffect.java index 5ef40cd495..832c6bf751 100644 --- a/app/src/main/java/cc/ioctl/hook/chat/DisableEnterEffect.java +++ b/app/src/main/java/cc/ioctl/hook/chat/DisableEnterEffect.java @@ -29,6 +29,10 @@ import io.github.qauxv.dsl.FunctionEntryRouter.Locations.Simplify; import io.github.qauxv.hook.CommonSwitchFunctionHook; import io.github.qauxv.util.Initiator; +import io.github.qauxv.util.QQVersion; +import io.github.qauxv.util.dexkit.DexKit; +import io.github.qauxv.util.dexkit.DexKitTarget; +import io.github.qauxv.util.dexkit.TroopEnterEffect_QQNT; import java.lang.reflect.Method; import java.lang.reflect.Modifier; @@ -40,7 +44,7 @@ public class DisableEnterEffect extends CommonSwitchFunctionHook { public static final DisableEnterEffect INSTANCE = new DisableEnterEffect(); protected DisableEnterEffect() { - super("rq_disable_enter_effect"); + super("rq_disable_enter_effect", new DexKitTarget[]{TroopEnterEffect_QQNT.INSTANCE}); } @NonNull @@ -62,6 +66,11 @@ public boolean isAvailable() { @Override public boolean initOnce() { + if (HostInfo.requireMinQQVersion(QQVersion.QQ_8_9_63)) { + Method m = DexKit.requireMethodFromCache(TroopEnterEffect_QQNT.INSTANCE); + HookUtils.hookBeforeIfEnabled(this, m, param -> param.setResult(null)); + return true; + } for (Method m : Initiator._TroopEnterEffectController().getDeclaredMethods()) { if ((m.getName().equals("a") || m.getName().equals("l")) && !Modifier.isStatic(m.getModifiers()) && m.getParameterTypes().length == 0 && m.getReturnType() == void.class) { diff --git a/app/src/main/java/io/github/qauxv/util/dexkit/DexKitTarget.kt b/app/src/main/java/io/github/qauxv/util/dexkit/DexKitTarget.kt index ed53f49871..c212ff6242 100644 --- a/app/src/main/java/io/github/qauxv/util/dexkit/DexKitTarget.kt +++ b/app/src/main/java/io/github/qauxv/util/dexkit/DexKitTarget.kt @@ -712,3 +712,11 @@ object TroopSendFile_QQNT : DexKitTarget.UsingStr() { override val declaringClass = "" override val filter = DexKitFilter.allowAll } + +object TroopEnterEffect_QQNT : DexKitTarget.UsingStr() { + override val findMethod: Boolean = true + override val traitString = arrayOf("playAnimaions: isSimpleUISwitch = true") + override val declaringClass = "" + override val filter = DexKitFilter.allowAll + // 理论上非NT也能用,但祖法不可变 +}