diff --git a/app/build.gradle b/app/build.gradle index c529a240..f4bd5775 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,7 +18,7 @@ android { targetSdk sdk versionCode gitCommitCount versionName '2.9.6' - buildConfigField "String", "TARGET_VERSION", "\"12.56.1.1\"" + buildConfigField "String", "TARGET_VERSION", "\"12.56.4.0\"" testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' externalNativeBuild { diff --git a/app/src/main/java/gm/tieba/tabswitch/hooker/deobfuscation/Deobfuscation.java b/app/src/main/java/gm/tieba/tabswitch/hooker/deobfuscation/Deobfuscation.java index fbcd412c..1601ddc4 100644 --- a/app/src/main/java/gm/tieba/tabswitch/hooker/deobfuscation/Deobfuscation.java +++ b/app/src/main/java/gm/tieba/tabswitch/hooker/deobfuscation/Deobfuscation.java @@ -180,6 +180,12 @@ private MethodDataList findMethod(DexKitBridge bridge, FindMethod baseMethodQuer MethodMatcher.create().name(methodNameMatcher.getName()) ) ); + } else if (matcher instanceof final ReturnTypeMatcher returnTypeMatcher) { + ret = bridge.findMethod( + baseMethodQuery.matcher( + MethodMatcher.create().returnType(returnTypeMatcher.getReturnType()) + ) + ); } return ret; } diff --git a/app/src/main/java/gm/tieba/tabswitch/hooker/eliminate/PurgeEnter.java b/app/src/main/java/gm/tieba/tabswitch/hooker/eliminate/PurgeEnter.java index d63a46d8..ac7eef13 100644 --- a/app/src/main/java/gm/tieba/tabswitch/hooker/eliminate/PurgeEnter.java +++ b/app/src/main/java/gm/tieba/tabswitch/hooker/eliminate/PurgeEnter.java @@ -18,6 +18,7 @@ import gm.tieba.tabswitch.hooker.deobfuscation.MethodNameMatcher; import gm.tieba.tabswitch.hooker.deobfuscation.Matcher; import gm.tieba.tabswitch.hooker.deobfuscation.ResIdentifierMatcher; +import gm.tieba.tabswitch.hooker.deobfuscation.ReturnTypeMatcher; import gm.tieba.tabswitch.util.ClassMatcherUtils; import gm.tieba.tabswitch.util.ReflectUtils; @@ -36,7 +37,11 @@ public String key() { public List matchers() { return List.of( new ResIdentifierMatcher("tbds400", "dimen", MatcherProperties.create().useClassMatcher(ClassMatcherUtils.usingString("enter_forum_login_tip"))), - new MethodNameMatcher("onSuccess", MatcherProperties.create().useClassMatcher(ClassMatcherUtils.usingString("enter_forum_login_tip"))) + new MethodNameMatcher("onSuccess", MatcherProperties.create().useClassMatcher(ClassMatcherUtils.usingString("enter_forum_login_tip"))), + new ReturnTypeMatcher<>( + boolean.class, + MatcherProperties.create().useClassMatcher(ClassMatcherUtils.className("com.baidu.tieba.enterForum.helper.HybridEnterForumHelper")).requireVersion("12.56.4.0") + ) ); } @@ -100,6 +105,9 @@ protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { } }); break; + case "12.56.4.0@HybridEnterForumHelper/boolean": // 禁用Webview进吧页 + XposedHelpers.findAndHookMethod(clazz, sClassLoader, method, XC_MethodReplacement.returnConstant(false)); + break; } }); } diff --git a/app/src/main/java/gm/tieba/tabswitch/util/ClassMatcherUtils.java b/app/src/main/java/gm/tieba/tabswitch/util/ClassMatcherUtils.java index 371e6cf6..6a4f3064 100644 --- a/app/src/main/java/gm/tieba/tabswitch/util/ClassMatcherUtils.java +++ b/app/src/main/java/gm/tieba/tabswitch/util/ClassMatcherUtils.java @@ -20,6 +20,12 @@ public static ClassMatcherUtils usingString(String str) { return new ClassMatcherUtils(classMatcher, str); } + public static ClassMatcherUtils className(String className) { + ClassMatcher classMatcher = ClassMatcher.create().className(className); + String simpleClassName = className.substring(className.lastIndexOf('.') + 1); + return new ClassMatcherUtils(classMatcher, simpleClassName); + } + public ClassMatcher getMatcher() { return this.matcher; }