x1ongzhu 1 éve
szülő
commit
87f1f45667

+ 6 - 1
app/proguard-rules.pro

@@ -18,4 +18,9 @@
 
 
 # If you keep the line number information, uncomment this to
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
+
+
+-keepclasseswithmembers class com.example.modifiermodule.XposedInit {
+    public *;
+}

+ 194 - 99
app/src/main/java/com/example/modifiermodule/XposedInit.java

@@ -83,113 +83,208 @@ public class XposedInit implements IXposedHookLoadPackage, IXposedHookZygoteInit
             }, 5, TimeUnit.SECONDS);
             }, 5, TimeUnit.SECONDS);
 
 
             try {
             try {
-                Class<?> PhoneInterfaceManager = XposedHelpers.findClass("com.android.phone.PhoneInterfaceManager", lpparam.classLoader);
-                XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getLine1NumberForDisplay", int.class, String.class, String.class, new XC_MethodHook() {
-                    @Override
-                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
-                        log("spoof PhoneInterfaceManager.getLine1NumberForDisplay");
-                        param.setResult(getVar("number", lpparam.packageName));
-                    }
-                });
-                XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getNetworkCountryIsoForPhone", int.class, new XC_MethodHook() {
-                    @Override
-                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
-                        log("spoof PhoneInterfaceManager.getNetworkCountryIsoForPhone");
-                        param.setResult(getVar("country", lpparam.packageName));
-                    }
-                });
-                XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getImeiForSlot", int.class, String.class, String.class, new XC_MethodHook() {
-                    @Override
-                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
-                        log("spoof PhoneInterfaceManager.getImeiForSlot");
-                        param.setResult(getVar("imei", lpparam.packageName));
-                    }
-                });
-
-                Class<?> SubscriptionController = XposedHelpers.findClass("com.android.internal.telephony.SubscriptionController", lpparam.classLoader);
-                XposedHelpers.findAndHookMethod(SubscriptionController, "getPhoneNumberFromFirstAvailableSource", int.class, String.class, String.class, new XC_MethodHook() {
-                    @Override
-                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
-                        log("spoof SubscriptionController.getPhoneNumberFromFirstAvailableSource");
-                        param.setResult(getVar("number", lpparam.packageName));
-                    }
-                });
-                Class<?> SystemProperties = XposedHelpers.findClass("android.os.SystemProperties", lpparam.classLoader);
-                XposedHelpers.findAndHookMethod(SubscriptionController, "getActiveSubscriptionInfoList", String.class, new XC_MethodHook() {
-                    @Override
-                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
-                        log("spoof SubscriptionController.getActiveSubscriptionInfoList");
-                        List<SubscriptionInfo> list = (List<SubscriptionInfo>) param.getResult();
-                        for (SubscriptionInfo info : list) {
-                            XposedHelpers.setObjectField(info, "mMcc", getVar("mcc", lpparam.packageName));
-                            XposedHelpers.setObjectField(info, "mMnc", getVar("mnc", lpparam.packageName));
-                            XposedHelpers.setObjectField(info, "mCountryIso", getVar("country", lpparam.packageName));
-                            XposedHelpers.setObjectField(info, "mIccId", getVar("iccid", lpparam.packageName));
+                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+                    Class<?> PhoneInterfaceManager = XposedHelpers.findClass("com.android.phone.PhoneInterfaceManager", lpparam.classLoader);
+                    XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getLine1NumberForDisplay", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneInterfaceManager.getLine1NumberForDisplay");
+                            param.setResult(getVar("number", lpparam.packageName));
+                        }
+                    });
+                    XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getNetworkCountryIsoForPhone", int.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneInterfaceManager.getNetworkCountryIsoForPhone");
+                            param.setResult(getVar("country", lpparam.packageName));
                         }
                         }
+                    });
+                    XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getImeiForSlot", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneInterfaceManager.getImeiForSlot");
+                            param.setResult(getVar("imei", lpparam.packageName));
+                        }
+                    });
+                    XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getSimStateForSlotIndex", int.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneInterfaceManager.getSimStateForSlotIndex");
+                            param.setResult(5);
+                        }
+                    });
 
 
-                        XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.iso-country", getVar("country", lpparam.packageName));
-                        XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
-                        XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
-                    }
-                });
-                XposedHelpers.findAndHookMethod(SubscriptionController, "getActiveSubscriptionInfoList", String.class, String.class, new XC_MethodHook() {
-                    @Override
-                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
-                        log("spoof SubscriptionController.getActiveSubscriptionInfoList");
-                        List<SubscriptionInfo> list = (List<SubscriptionInfo>) param.getResult();
-                        for (SubscriptionInfo info : list) {
-                            XposedHelpers.setObjectField(info, "mMcc", getVar("mcc", lpparam.packageName));
-                            XposedHelpers.setObjectField(info, "mMnc", getVar("mnc", lpparam.packageName));
-                            XposedHelpers.setObjectField(info, "mCountryIso", getVar("country", lpparam.packageName));
-                            XposedHelpers.setObjectField(info, "mIccId", getVar("iccid", lpparam.packageName));
+                    Class<?> SubscriptionController = XposedHelpers.findClass("com.android.internal.telephony.subscription.SubscriptionManagerService", lpparam.classLoader);
+                    XposedHelpers.findAndHookMethod(SubscriptionController, "getPhoneNumberFromFirstAvailableSource", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof SubscriptionController.getPhoneNumberFromFirstAvailableSource");
+                            param.setResult(getVar("number", lpparam.packageName));
                         }
                         }
+                    });
+                    Class<?> SystemProperties = XposedHelpers.findClass("android.os.SystemProperties", lpparam.classLoader);
+                    XposedHelpers.findAndHookMethod(SubscriptionController, "getActiveSubscriptionInfoList", String.class, String.class, boolean.class, new XC_MethodHook() {
+                        @Override
+                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof SubscriptionController.getActiveSubscriptionInfoList");
+                            List<SubscriptionInfo> list = (List<SubscriptionInfo>) param.getResult();
+                            for (SubscriptionInfo info : list) {
+                                XposedHelpers.setObjectField(info, "mMcc", getVar("mcc", lpparam.packageName));
+                                XposedHelpers.setObjectField(info, "mMnc", getVar("mnc", lpparam.packageName));
+                                XposedHelpers.setObjectField(info, "mCountryIso", getVar("country", lpparam.packageName));
+                                XposedHelpers.setObjectField(info, "mIccId", getVar("iccid", lpparam.packageName));
+                            }
 
 
-                        XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.iso-country", getVar("country", lpparam.packageName));
-                        XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
-                        XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
-                    }
-                });
-                XposedHelpers.findAndHookMethod(SubscriptionController, "getSimStateForSlotIndex", int.class, new XC_MethodHook() {
-                    @Override
-                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
-                        log("spoof SubscriptionController.getSimStateForSlotIndex");
-                        param.setResult(5);
-                    }
-                });
-
-                Class<?> PhoneSubInfoController = XposedHelpers.findClass("com.android.internal.telephony.PhoneSubInfoController", lpparam.classLoader);
-                XposedHelpers.findAndHookMethod(PhoneSubInfoController, "getIccSerialNumberForSubscriber", int.class, String.class, String.class, new XC_MethodHook() {
-                    @Override
-                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
-                        log("spoof PhoneSubInfoController.getIccSerialNumberForSubscriber");
-                        param.setResult(getVar("iccid", lpparam.packageName));
-                    }
-                });
-                XposedHelpers.findAndHookMethod(PhoneSubInfoController, "getSubscriberIdForSubscriber", int.class, String.class, String.class, new XC_MethodHook() {
-                    @Override
-                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
-                        log("spoof PhoneSubInfoController.getSubscriberIdForSubscriber");
-                        param.setResult(getVar("imsi", lpparam.packageName));
-                    }
-                });
+                            XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.iso-country", getVar("country", lpparam.packageName));
+                            XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                            XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                        }
+                    });
+
+                    Class<?> PhoneSubInfoController = XposedHelpers.findClass("com.android.internal.telephony.PhoneSubInfoController", lpparam.classLoader);
+                    XposedHelpers.findAndHookMethod(PhoneSubInfoController, "getIccSerialNumberForSubscriber", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneSubInfoController.getIccSerialNumberForSubscriber");
+                            param.setResult(getVar("iccid", lpparam.packageName));
+                        }
+                    });
+                    XposedHelpers.findAndHookMethod(PhoneSubInfoController, "getSubscriberIdForSubscriber", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneSubInfoController.getSubscriberIdForSubscriber");
+                            param.setResult(getVar("imsi", lpparam.packageName));
+                        }
+                    });
 
 
 
 
-                XposedHelpers.findAndHookMethod(SystemProperties, "get", String.class, new XC_MethodHook() {
-                    @Override
-                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
-                        String key = (String) param.args[0];
-                        if ("gsm.sim.operator.iso-country".equals(key)) {
-                            log("spoof SystemProperties.get(" + key + ")");
+                    XposedHelpers.findAndHookMethod(SystemProperties, "get", String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            String key = (String) param.args[0];
+                            if ("gsm.sim.operator.iso-country".equals(key)) {
+                                log("spoof SystemProperties.get(" + key + ")");
+                                param.setResult(getVar("country", lpparam.packageName));
+                            } else if ("gsm.sim.operator.numeric".equals(key)) {
+                                log("spoof SystemProperties.get(" + key + ")");
+                                param.setResult(getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                            } else if ("gsm.operator.numeric".equals(key)) {
+                                log("spoof SystemProperties.get(" + key + ")");
+                                param.setResult(getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                            }
+                        }
+                    });
+                } else {
+                    Class<?> PhoneInterfaceManager = XposedHelpers.findClass("com.android.phone.PhoneInterfaceManager", lpparam.classLoader);
+                    XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getLine1NumberForDisplay", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneInterfaceManager.getLine1NumberForDisplay");
+                            param.setResult(getVar("number", lpparam.packageName));
+                        }
+                    });
+                    XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getNetworkCountryIsoForPhone", int.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneInterfaceManager.getNetworkCountryIsoForPhone");
                             param.setResult(getVar("country", lpparam.packageName));
                             param.setResult(getVar("country", lpparam.packageName));
-                        } else if ("gsm.sim.operator.numeric".equals(key)) {
-                            log("spoof SystemProperties.get(" + key + ")");
-                            param.setResult(getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
-                        } else if ("gsm.operator.numeric".equals(key)) {
-                            log("spoof SystemProperties.get(" + key + ")");
-                            param.setResult(getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
                         }
                         }
-                    }
-                });
+                    });
+                    XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getImeiForSlot", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneInterfaceManager.getImeiForSlot");
+                            param.setResult(getVar("imei", lpparam.packageName));
+                        }
+                    });
+
+                    Class<?> SubscriptionController = XposedHelpers.findClass("com.android.internal.telephony.SubscriptionController", lpparam.classLoader);
+                    XposedHelpers.findAndHookMethod(SubscriptionController, "getPhoneNumberFromFirstAvailableSource", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof SubscriptionController.getPhoneNumberFromFirstAvailableSource");
+                            param.setResult(getVar("number", lpparam.packageName));
+                        }
+                    });
+                    Class<?> SystemProperties = XposedHelpers.findClass("android.os.SystemProperties", lpparam.classLoader);
+                    XposedHelpers.findAndHookMethod(SubscriptionController, "getActiveSubscriptionInfoList", String.class, new XC_MethodHook() {
+                        @Override
+                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof SubscriptionController.getActiveSubscriptionInfoList");
+                            List<SubscriptionInfo> list = (List<SubscriptionInfo>) param.getResult();
+                            for (SubscriptionInfo info : list) {
+                                XposedHelpers.setObjectField(info, "mMcc", getVar("mcc", lpparam.packageName));
+                                XposedHelpers.setObjectField(info, "mMnc", getVar("mnc", lpparam.packageName));
+                                XposedHelpers.setObjectField(info, "mCountryIso", getVar("country", lpparam.packageName));
+                                XposedHelpers.setObjectField(info, "mIccId", getVar("iccid", lpparam.packageName));
+                            }
+
+                            XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.iso-country", getVar("country", lpparam.packageName));
+                            XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                            XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                        }
+                    });
+                    XposedHelpers.findAndHookMethod(SubscriptionController, "getActiveSubscriptionInfoList", String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof SubscriptionController.getActiveSubscriptionInfoList");
+                            List<SubscriptionInfo> list = (List<SubscriptionInfo>) param.getResult();
+                            for (SubscriptionInfo info : list) {
+                                XposedHelpers.setObjectField(info, "mMcc", getVar("mcc", lpparam.packageName));
+                                XposedHelpers.setObjectField(info, "mMnc", getVar("mnc", lpparam.packageName));
+                                XposedHelpers.setObjectField(info, "mCountryIso", getVar("country", lpparam.packageName));
+                                XposedHelpers.setObjectField(info, "mIccId", getVar("iccid", lpparam.packageName));
+                            }
+
+                            XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.iso-country", getVar("country", lpparam.packageName));
+                            XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                            XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.operator.numeric", getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                        }
+                    });
+                    XposedHelpers.findAndHookMethod(SubscriptionController, "getSimStateForSlotIndex", int.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof SubscriptionController.getSimStateForSlotIndex");
+                            param.setResult(5);
+                        }
+                    });
+
+                    Class<?> PhoneSubInfoController = XposedHelpers.findClass("com.android.internal.telephony.PhoneSubInfoController", lpparam.classLoader);
+                    XposedHelpers.findAndHookMethod(PhoneSubInfoController, "getIccSerialNumberForSubscriber", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneSubInfoController.getIccSerialNumberForSubscriber");
+                            param.setResult(getVar("iccid", lpparam.packageName));
+                        }
+                    });
+                    XposedHelpers.findAndHookMethod(PhoneSubInfoController, "getSubscriberIdForSubscriber", int.class, String.class, String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            log("spoof PhoneSubInfoController.getSubscriberIdForSubscriber");
+                            param.setResult(getVar("imsi", lpparam.packageName));
+                        }
+                    });
+
+
+                    XposedHelpers.findAndHookMethod(SystemProperties, "get", String.class, new XC_MethodHook() {
+                        @Override
+                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+                            String key = (String) param.args[0];
+                            if ("gsm.sim.operator.iso-country".equals(key)) {
+                                log("spoof SystemProperties.get(" + key + ")");
+                                param.setResult(getVar("country", lpparam.packageName));
+                            } else if ("gsm.sim.operator.numeric".equals(key)) {
+                                log("spoof SystemProperties.get(" + key + ")");
+                                param.setResult(getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                            } else if ("gsm.operator.numeric".equals(key)) {
+                                log("spoof SystemProperties.get(" + key + ")");
+                                param.setResult(getVar("mcc", lpparam.packageName) + getVar("mnc", lpparam.packageName));
+                            }
+                        }
+                    });
+                }
+
+
             } catch (Exception e) {
             } catch (Exception e) {
                 e.printStackTrace();
                 e.printStackTrace();
             }
             }