Skip to content

Commit a324817

Browse files
committed
Refine SeeMore constructor lookup
1 parent 31e0c42 commit a324817

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

app/src/main/java/com/wmods/wppenhacer/xposed/core/devkit/Unobfuscator.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,14 +1296,21 @@ public synchronized static Class loadFilterAdaperClass(ClassLoader loader) throw
12961296

12971297
public synchronized static Constructor loadSeeMoreConstructor(ClassLoader loader) throws Exception {
12981298
return UnobfuscatorCache.getInstance().getConstructor(loader, () -> {
1299-
var classList = dexkit.findClass(FindClass.create().matcher(ClassMatcher.create()
1300-
.addMethod(MethodMatcher.create().addUsingNumber(16384).addUsingNumber(512).addUsingNumber(64).addUsingNumber(16))
1301-
.addMethod(MethodMatcher.create().paramCount(2).paramTypes(int.class, boolean.class))
1302-
.addMethod(MethodMatcher.create().paramCount(2, 3).paramTypes(int.class, int.class, int.class))
1303-
));
13041299

1305-
if (classList.isEmpty()) throw new RuntimeException("SeeMore constructor 1 not found");
1306-
var clazzData = classList.get(0);
1300+
var commentClass = findFirstClassUsingName(loader, StringMatchType.EndsWith, "CommentTextView");
1301+
var commentClassData = dexkit.getClassData(commentClass);
1302+
var methods = commentClassData.getMethods();
1303+
var arrayList = new ArrayList<ClassData>();
1304+
methods.forEach((methodData -> {
1305+
var invokes = methodData.getInvokes();
1306+
var classes = invokes.stream().map(MethodData::getDeclaredClass).collect(Collectors.toSet());
1307+
arrayList.addAll(classes);
1308+
}));
1309+
1310+
var clazzData = dexkit.findClass(FindClass.create().searchIn(arrayList).matcher(ClassMatcher.create()
1311+
.addMethod(MethodMatcher.create().addUsingNumber(16384).addUsingNumber(512).addUsingNumber(64).addUsingNumber(16))
1312+
)).singleOrNull();
1313+
if (clazzData == null) throw new RuntimeException("SeeMore constructor 1 not found");
13071314
for (var method : clazzData.getMethods()) {
13081315
if (method.getParamCount() > 1 && method.isConstructor() && method.getParamTypes().stream().allMatch(c -> c.getName().equals(int.class.getName()))) {
13091316
return method.getConstructorInstance(loader);

app/src/main/java/com/wmods/wppenhacer/xposed/features/general/ChatLimit.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import com.wmods.wppenhacer.xposed.core.devkit.Unobfuscator;
1212
import com.wmods.wppenhacer.xposed.utils.ReflectionUtils;
1313

14+
import org.luckypray.dexkit.util.DexSignUtil;
15+
1416
import java.util.Set;
1517

1618
import de.robv.android.xposed.XC_MethodHook;
@@ -103,6 +105,8 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
103105
}
104106

105107
var seeMoreMethod = Unobfuscator.loadSeeMoreConstructor(classLoader);
108+
logDebug("SeenMore Method: ", DexSignUtil.getMethodDescriptor(seeMoreMethod));
109+
106110
XposedBridge.hookMethod(seeMoreMethod, new XC_MethodHook() {
107111
@Override
108112
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {

0 commit comments

Comments
 (0)