| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- package com.example.modifiermodule;
- import android.annotation.SuppressLint;
- import android.app.Application;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.telephony.SubscriptionInfo;
- import java.io.File;
- import java.util.List;
- import java.util.Optional;
- 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);
- }
- @SuppressLint("UnspecifiedRegisterReceiverFlag")
- public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
- if (!lpparam.packageName.equals("com.android.phone")) {
- return;
- }
- try {
- Class<?> PhoneApp = XposedHelpers.findClass("com.android.phone.PhoneApp", lpparam.classLoader);
- XposedHelpers.findAndHookMethod(PhoneApp, "onCreate", new XC_MethodHook() {
- @Override
- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
- log("PhoneApp.onCreate");
- Application application = (Application) param.thisObject;
- File configFile = new File(application.getFilesDir(), "config.json");
- configFile.setReadOnly();
- setConfigFile(configFile);
- IntentFilter filter = new IntentFilter("com.example.modifier.sms");
- application.registerReceiver(new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String sender = Optional.ofNullable(intent.getStringExtra("sender")).orElse("1234");
- String message = Optional.ofNullable(intent.getStringExtra("message")).orElse("test");
- Intent i1 = RcsHackTool.createSmsIntent(application, sender, message);
- i1.setAction("android.provider.Telephony.SMS_RECEIVED");
- application.sendBroadcast(i1);
- i1.setAction("android.provider.Telephony.SMS_DELIVER");
- application.sendBroadcast(i1);
- }
- }, filter);
- log("register broadcast receiver success");
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- 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, ""));
- }
- });
- XposedHelpers.findAndHookMethod(PhoneInterfaceManager, "getDeviceIdForPhone", String.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) {
- log("spoof PhoneInterfaceManager.getDeviceId");
- 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, ""));
- }
- });
- XposedHelpers.findAndHookMethod(PhoneSubInfoController, "getDeviceId", String.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- log("spoof PhoneSubInfoController.getDeviceIdForPhone");
- param.setResult(getProperty(PROP_IMEI, ""));
- }
- });
- XposedHelpers.findAndHookMethod(PhoneSubInfoController, "getDeviceIdForPhone", int.class, String.class, String.class, new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- log("spoof PhoneSubInfoController.getDeviceIdForPhone");
- param.setResult(getProperty(PROP_IMEI, ""));
- }
- });
- } 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", 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();
- }
- }
- }
|