Skip to content

Commit 44d6f3a

Browse files
committed
feat: add support WA 2.26.7.xx and fix minors bugs
1 parent 2fd8a5d commit 44d6f3a

File tree

6 files changed

+24
-76
lines changed

6 files changed

+24
-76
lines changed

app/src/main/java/com/wmods/wppenhacer/xposed/core/components/FMessageWpp.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,13 @@ public static void initialize(ClassLoader classLoader) {
5757
Key.TYPE = keyMessage.getType();
5858
messageMethod = Unobfuscator.loadNewMessageMethod(classLoader);
5959
messageWithMediaMethod = Unobfuscator.loadNewMessageWithMediaMethod(classLoader);
60-
getFieldIdMessage = Unobfuscator.loadSetEditMessageField(classLoader);
6160
var deviceJidClass = Unobfuscator.findFirstClassUsingName(classLoader, StringMatchType.EndsWith, "jid.DeviceJid");
6261
deviceJidField = ReflectionUtils.findFieldUsingFilter(TYPE, field -> field.getType() == deviceJidClass);
6362
mediaTypeField = Unobfuscator.loadMediaTypeField(classLoader);
6463
getOriginalMessageKey = Unobfuscator.loadOriginalMessageKey(classLoader);
6564
abstractMediaMessageClass = Unobfuscator.loadAbstractMediaMessageClass(classLoader);
6665
broadcastField = Unobfuscator.loadBroadcastTagField(classLoader);
66+
getFieldIdMessage = Unobfuscator.loadSetEditMessageField(classLoader);
6767
} catch (Exception e) {
6868
XposedBridge.log(e);
6969
}

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

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1397,26 +1397,20 @@ public synchronized static Method loadGetEditMessageMethod(ClassLoader loader) t
13971397
});
13981398
}
13991399

1400-
/**
1401-
* @noinspection DataFlowIssue
1402-
*/
14031400
/**
14041401
* @noinspection DataFlowIssue
14051402
*/
14061403
public synchronized static Field loadSetEditMessageField(ClassLoader loader) throws Exception {
14071404
return UnobfuscatorCache.getInstance().getField(loader, () -> {
1408-
var classData = dexkit.getClassData(loadCoreMessageStore(loader));
1409-
var method = findFirstMethodUsingStrings(loader, StringMatchType.Contains,
1410-
"CoreMessageStore/updateCheckoutMessageWithTransactionInfo");
1405+
var method = findFirstMethodUsingStrings(loader, StringMatchType.Contains, "CoreMessageStore/updateCheckoutMessageWithTransactionInfo");
14111406
if (method == null)
1412-
method = findFirstMethodUsingStrings(loader, StringMatchType.Contains,
1413-
"UPDATE_MESSAGE_ADD_ON_FLAGS_MAIN_SQL");
1407+
method = findFirstMethodUsingStrings(loader, StringMatchType.Contains, "UPDATE_MESSAGE_ADD_ON_FLAGS_MAIN_SQL");
1408+
var classData = dexkit.getClassData(loadFMessageClass(loader));
14141409
var methodData = dexkit.getMethodData(DexSignUtil.getMethodDescriptor(method));
14151410
var usingFields = methodData.getUsingFields();
14161411
for (var f : usingFields) {
14171412
var field = f.getField();
1418-
if (field.getDeclaredClass().equals(classData)
1419-
&& field.getType().getName().equals(long.class.getName())) {
1413+
if (field.getDeclaredClass().equals(classData) && field.getType().getName().equals(long.class.getName())) {
14201414
return field.getFieldInstance(loader);
14211415
}
14221416
}
@@ -1504,15 +1498,11 @@ public synchronized static Method loadOnMenuItemSelected(ClassLoader loader) thr
15041498

15051499
public synchronized static Method loadOnUpdateStatusChanged(ClassLoader loader) throws Exception {
15061500
return UnobfuscatorCache.getInstance().getMethod(loader, () -> {
1507-
var clazz = getClassByName("UpdatesViewModel", loader);
1508-
var clazzData = dexkit.getClassData(clazz);
1509-
var methodSeduleche = XposedHelpers.findMethodBestMatch(Timer.class, "schedule", TimerTask.class,
1510-
long.class, long.class);
1511-
var result = dexkit.findMethod(new FindMethod().searchInClass(List.of(clazzData))
1512-
.matcher(new MethodMatcher().addInvoke(DexSignUtil.getMethodDescriptor(methodSeduleche))));
1501+
var clazzData = dexkit.findClass(FindClass.create().matcher(ClassMatcher.create().addUsingString("UpdatesViewModel/"))).firstOrNull();
1502+
var methodSeduleche = XposedHelpers.findMethodBestMatch(Timer.class, "schedule", TimerTask.class, long.class, long.class);
1503+
var result = clazzData.findMethod(FindMethod.create().matcher(MethodMatcher.create().addInvoke(DexSignUtil.getMethodDescriptor(methodSeduleche))));
15131504
if (result.isEmpty())
1514-
result = dexkit.findMethod(new FindMethod().searchInClass(List.of(clazzData)).matcher(
1515-
new MethodMatcher().addUsingString("UpdatesViewModel/Scheduled updates list refresh")));
1505+
result = dexkit.findMethod(FindMethod.create().matcher(MethodMatcher.create().addUsingString("UpdatesViewModel/Scheduled updates list refresh")));
15161506
if (result.isEmpty())
15171507
throw new RuntimeException("OnUpdateStatusChanged method not found");
15181508
return result.get(0).getMethodInstance(loader);

app/src/main/java/com/wmods/wppenhacer/xposed/features/customization/IGStatus.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import org.luckypray.dexkit.query.enums.StringMatchType;
1919

20+
import java.lang.reflect.Modifier;
2021
import java.util.ArrayList;
2122
import java.util.Arrays;
2223
import java.util.List;
@@ -86,13 +87,15 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
8687
}
8788
});
8889

89-
var clazz2 = Unobfuscator.getClassByName("UpdatesViewModel", classLoader);
9090
var onUpdateStatusChanged = Unobfuscator.loadOnUpdateStatusChanged(classLoader);
9191
logDebug(Unobfuscator.getMethodDescriptor(onUpdateStatusChanged));
9292
var statusInfoClass = Unobfuscator.loadStatusInfoClass(classLoader);
9393
logDebug(statusInfoClass);
9494

95-
XposedBridge.hookAllConstructors(clazz2, new XC_MethodHook() {
95+
var updateModel = onUpdateStatusChanged.getDeclaringClass();
96+
logDebug(updateModel);
97+
98+
XposedBridge.hookAllConstructors(updateModel, new XC_MethodHook() {
9699
@Override
97100
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
98101
itens.add(0, null);

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -287,12 +287,12 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
287287
private void disableAds() throws Exception {
288288
propsBoolean.put(22904, true);
289289
propsBoolean.put(14306, false);
290-
try {
291-
var loadAd = Unobfuscator.loadAdVerifyMethod(classLoader);
292-
XposedBridge.hookMethod(loadAd, XC_MethodReplacement.returnConstant(false));
293-
} catch (Exception e) {
294-
logDebug(e);
295-
}
290+
// try {
291+
// var loadAd = Unobfuscator.loadAdVerifyMethod(classLoader);
292+
// XposedBridge.hookMethod(loadAd, XC_MethodReplacement.returnConstant(false));
293+
// } catch (Exception e) {
294+
// logDebug(e);
295+
// }
296296
}
297297

298298
private void disablePhotoProfileStatus() throws Exception {

app/src/main/java/com/wmods/wppenhacer/xposed/features/others/Spy.java

Lines changed: 2 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
11
package com.wmods.wppenhacer.xposed.features.others;
22

3-
import android.view.MenuItem;
3+
import androidx.annotation.NonNull;
44

55
import com.wmods.wppenhacer.xposed.core.Feature;
6-
import com.wmods.wppenhacer.xposed.core.devkit.Unobfuscator;
7-
import com.wmods.wppenhacer.xposed.utils.Utils;
86

9-
import java.lang.reflect.Method;
10-
import java.util.Arrays;
11-
12-
import de.robv.android.xposed.XC_MethodHook;
137
import de.robv.android.xposed.XSharedPreferences;
14-
import de.robv.android.xposed.XposedBridge;
15-
import de.robv.android.xposed.XposedHelpers;
16-
import com.wmods.wppenhacer.xposed.core.WppCore;
178

189
public class Spy extends Feature {
1910

@@ -23,48 +14,10 @@ public Spy(ClassLoader loader, XSharedPreferences preferences) {
2314

2415
@Override
2516
public void doHook() throws Exception {
26-
// if (!prefs.getBoolean("enable_spy", false)) return;
27-
XposedBridge.log("WAE: Spy Forced Enabled");
28-
29-
// ... (Keep existing generic hooks if needed, but focusing on dumps for now)
30-
31-
dumpMessageStore(classLoader);
32-
dumpCoreMessageStore(classLoader);
33-
}
34-
35-
// ... (keep logMenuClick and dumpConversationFields)
36-
37-
private void dumpMessageStore(ClassLoader loader) {
38-
try {
39-
java.lang.reflect.Field f = WppCore.class.getDeclaredField("mCachedMessageStore");
40-
f.setAccessible(true);
41-
Object store = f.get(null);
42-
if (store != null) {
43-
XposedBridge.log("WAE: mCachedMessageStore class: " + store.getClass().getName());
44-
for (Method m : store.getClass().getDeclaredMethods()) {
45-
XposedBridge.log("WAE: MessageStore method: " + m.getName() + " " + Arrays.toString(m.getParameterTypes()));
46-
}
47-
} else {
48-
XposedBridge.log("WAE: mCachedMessageStore is null");
49-
}
50-
} catch (Exception e) {
51-
XposedBridge.log("WAE: MessageStore Dump failed: " + e);
52-
}
53-
}
5417

55-
private void dumpCoreMessageStore(ClassLoader loader) {
56-
try {
57-
Class<?> cms = Unobfuscator.loadCoreMessageStore(loader);
58-
XposedBridge.log("WAE: CoreMessageStore class: " + cms.getName());
59-
for (Method m : cms.getDeclaredMethods()) {
60-
// Dump ALL methods to find the right signature
61-
XposedBridge.log("WAE: CMS method: " + m.getName() + " " + Arrays.toString(m.getParameterTypes()));
62-
}
63-
} catch (Exception e) {
64-
XposedBridge.log("WAE: CMS Dump failed: " + e);
65-
}
6618
}
6719

20+
@NonNull
6821
@Override
6922
public String getPluginName() {
7023
return "Spy Tool";

app/src/main/res/values/arrays.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@
160160
<item>2.26.4.xx</item>
161161
<item>2.26.5.xx</item>
162162
<item>2.26.6.xx</item>
163+
<item>2.26.7.xx</item>
163164
</string-array>
164165
<string-array name="supported_versions_business">
165166
<item>2.26.1.xx</item>
@@ -168,6 +169,7 @@
168169
<item>2.26.4.xx</item>
169170
<item>2.26.5.xx</item>
170171
<item>2.26.6.xx</item>
172+
<item>2.26.7.xx</item>
171173
</string-array>
172174
<string-array name="image_picker">
173175
<item>image/*</item>

0 commit comments

Comments
 (0)