xiongzhu 1 سال پیش
والد
کامیت
b1bad429be

+ 2 - 2
app/build.gradle

@@ -10,8 +10,8 @@ android {
         applicationId "com.example.modifiermodule"
         minSdk 24
         targetSdk 34
-        versionCode 2
-        versionName "1.0.1"
+        versionCode 3
+        versionName "1.0.2"
         archivesBaseName = "${applicationId}-${versionName}(${versionCode})"
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

+ 1 - 1
app/src/main/java/com/example/modifiermodule/HookMessage.java → app/src/main/java/com/example/modifiermodule/HookMessage_043001RC00.java

@@ -4,7 +4,7 @@ import de.robv.android.xposed.XC_MethodHook;
 import de.robv.android.xposed.XposedHelpers;
 import de.robv.android.xposed.callbacks.XC_LoadPackage;
 
-public class HookMessage extends BaseHook {
+public class HookMessage_043001RC00 extends BaseHook {
     public static void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
         try {
             Class<?> bhyo = XposedHelpers.findClass("bhyo", lpparam.classLoader);

+ 30 - 0
app/src/main/java/com/example/modifiermodule/HookMessage_20241215_00_RC00.java

@@ -0,0 +1,30 @@
+package com.example.modifiermodule;
+
+import de.robv.android.xposed.XC_MethodHook;
+import de.robv.android.xposed.XposedHelpers;
+import de.robv.android.xposed.callbacks.XC_LoadPackage;
+
+public class HookMessage_20241215_00_RC00 extends BaseHook {
+    public static void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
+        try {
+            Class<?> buiz = XposedHelpers.findClass("buiz", lpparam.classLoader);
+            XposedHelpers.findAndHookMethod(buiz, "d", String.class, new XC_MethodHook() {
+                @Override
+                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+                    String policy = getProperty(PROP_UPI_POLICY, "upi-carrier-id-with-mo-sms-relax");
+                    log("spoofsms upi-policy: " + policy);
+                    XposedHelpers.setObjectField(param.getResult(), "b", policy);
+                }
+            });
+            XposedHelpers.findAndHookMethod(buiz, "c", String.class, new XC_MethodHook() {
+                @Override
+                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+                    log("spoofsms .F = 1");
+                    XposedHelpers.setIntField(param.getResult(), "F", 1);
+                }
+            });
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 17 - 16
app/src/main/java/com/example/modifiermodule/XposedInit.java

@@ -6,30 +6,15 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.telephony.SubscriptionInfo;
-import android.util.Log;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.ClassUtils;
-import org.json.JSONException;
-import org.json.JSONObject;
 
 import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.List;
 import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
 import de.robv.android.xposed.IXposedHookInitPackageResources;
 import de.robv.android.xposed.IXposedHookLoadPackage;
 import de.robv.android.xposed.IXposedHookZygoteInit;
-import de.robv.android.xposed.XC_MethodHook;
-import de.robv.android.xposed.XSharedPreferences;
-import de.robv.android.xposed.XposedBridge;
 import de.robv.android.xposed.XposedHelpers;
 import de.robv.android.xposed.callbacks.XC_InitPackageResources;
 import de.robv.android.xposed.callbacks.XC_LoadPackage;
@@ -91,7 +76,23 @@ public class XposedInit extends BaseHook implements IXposedHookLoadPackage, IXpo
         }
 
         if ("com.google.android.apps.messaging".equals(lpparam.packageName)) {
-            HookMessage.handleLoadPackage(lpparam);
+            String versionName = "";
+            try {
+                Class<?> parserCls = XposedHelpers.findClass("android.content.pm.PackageParser", lpparam.classLoader);
+                Object parser = parserCls.newInstance();
+                File apkPath = new File(lpparam.appInfo.sourceDir);
+                Object pkg = XposedHelpers.callMethod(parser, "parsePackage", apkPath, 0);
+                versionName = (String) XposedHelpers.getObjectField(pkg, "mVersionName");
+                log("get message version: " + versionName);
+            } catch (Throwable e) {
+                log("get message version error: " + e.getMessage());
+            }
+            if ("messages.android_20241215_00_RC00.phone.openbeta_dynamic".equals(versionName)) {
+                HookMessage_20241215_00_RC00.handleLoadPackage(lpparam);
+            } else {
+                HookMessage_043001RC00.handleLoadPackage(lpparam);
+            }
+
         }
 
 //        Class<?> SubscriptionManager = XposedHelpers.findClass("android.telephony.SubscriptionManager", lpparam.classLoader);