| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- package com.example.modifiermodule;
- import android.telephony.SubscriptionInfo;
- import java.util.List;
- import de.robv.android.xposed.XC_MethodHook;
- import de.robv.android.xposed.XposedHelpers;
- import de.robv.android.xposed.callbacks.XC_LoadPackage;
- public class Hook13 extends BaseHook {
- public Hook13(ClassLoader classLoader) {
- super(classLoader);
- }
- public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
- if (!lpparam.packageName.equals("com.android.phone")) {
- return;
- }
- 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(getProperty(PROP_NUMBER, ""));
- }
- });
- XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getNetworkCountryIsoForPhone", int.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- log("spoof PhoneInterfaceManager.getNetworkCountryIsoForPhone");
- param.setResult(getProperty(PROP_COUNTRY, ""));
- }
- });
- 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(getProperty(PROP_IMEI, ""));
- }
- });
- XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getMeidForSlot", int.class, String.class, String.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- log("spoof PhoneInterfaceManager.getMeidForSlot");
- String imei = getProperty(PROP_IMEI, "");
- String meid = imei;
- if (imei.length() > 14) {
- meid = imei.substring(0, 14);
- }
- param.setResult(meid);
- }
- });
- XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getSubscriptionSpecificCarrierId", int.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) {
- int carrierId = getIntProperty(PROP_CARRIER_ID, -1);
- if (carrierId != -1) {
- log("spoof PhoneInterfaceManager.getSubscriptionSpecificCarrierId");
- param.setResult(carrierId);
- }
- }
- });
- XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getSubscriptionCarrierId", int.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) {
- log("spoof PhoneInterfaceManager.getSubscriptionCarrierId");
- int carrierId = getIntProperty(PROP_CARRIER_ID, -1);
- if (carrierId != -1) {
- param.setResult(carrierId);
- }
- }
- });
- XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getDeviceIdWithFeature", String.class, String.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) {
- log("spoof PhoneInterfaceManager.getDeviceIdWithFeature");
- param.setResult(getProperty(PROP_IMEI, ""));
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- Class<?> SystemProperties = XposedHelpers.findClass("android.os.SystemProperties", lpparam.classLoader);
- try {
- 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(getProperty(PROP_NUMBER, ""));
- }
- });
- 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", getProperty(PROP_MCC, ""));
- XposedHelpers.setObjectField(info, "mMnc", getProperty(PROP_MNC, ""));
- XposedHelpers.setObjectField(info, "mCountryIso", getProperty(PROP_COUNTRY, ""));
- XposedHelpers.setObjectField(info, "mIccId", getProperty(PROP_ICCID, ""));
- int carrierId = getIntProperty(PROP_CARRIER_ID, -1);
- if (carrierId != -1) {
- XposedHelpers.setObjectField(info, "mCarrierId", carrierId);
- }
- }
- XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.iso-country", getProperty(PROP_COUNTRY, ""));
- XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.numeric", getProperty(PROP_MCC, "") + getProperty(PROP_MNC, ""));
- XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.operator.numeric", getProperty(PROP_MCC, "") + getProperty(PROP_MNC, ""));
- }
- });
- 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", getProperty(PROP_MCC, ""));
- XposedHelpers.setObjectField(info, "mMnc", getProperty(PROP_MNC, ""));
- XposedHelpers.setObjectField(info, "mCountryIso", getProperty(PROP_COUNTRY, ""));
- XposedHelpers.setObjectField(info, "mIccId", getProperty(PROP_ICCID, ""));
- int carrierId = getIntProperty(PROP_CARRIER_ID, -1);
- if (carrierId != -1) {
- XposedHelpers.setObjectField(info, "mCarrierId", carrierId);
- }
- }
- XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.iso-country", getProperty(PROP_COUNTRY, ""));
- XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.sim.operator.numeric", getProperty(PROP_MCC, "") + getProperty(PROP_MNC, ""));
- XposedHelpers.callStaticMethod(SystemProperties, "set", "gsm.operator.numeric", getProperty(PROP_MCC, "") + getProperty(PROP_MNC, ""));
- }
- });
- XposedHelpers.findAndHookMethod(SubscriptionController, "getSimStateForSlotIndex", int.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- log("spoof SubscriptionController.getSimStateForSlotIndex");
- param.setResult(5);
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- Class<?> PhoneSubInfoController = XposedHelpers.findClass("com.android.internal.telephony.PhoneSubInfoController", lpparam.classLoader);
- log("PhoneSubInfoController: " + lpparam.packageName);
- 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(getProperty(PROP_ICCID, ""));
- }
- });
- 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(getProperty(PROP_IMSI, ""));
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- 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(getProperty(PROP_COUNTRY, ""));
- } else if ("gsm.sim.operator.numeric".equals(key)) {
- log("spoof SystemProperties.get(" + key + ")");
- param.setResult(getProperty(PROP_MCC, "") + getProperty(PROP_MNC, ""));
- } else if ("gsm.operator.numeric".equals(key)) {
- log("spoof SystemProperties.get(" + key + ")");
- param.setResult(getProperty(PROP_MCC, "") + getProperty(PROP_MNC, ""));
- }
- }
- });
- try {
- Class<?> CarrierResolver = XposedHelpers.findClass("com.android.internal.telephony.CarrierResolver", lpparam.classLoader);
- XposedHelpers.findAndHookMethod(CarrierResolver, "getCarrierIdFromSimMccMnc", String.class, String.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- log("spoof CarrierResolver.getCarrierIdFromSimMccMnc");
- int carrierId = getIntProperty(PROP_CARRIER_ID, -1);
- if (carrierId != -1) {
- param.setResult(carrierId);
- }
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
|