适用于泛泰A850K,系统版本S0837210
改mms.apk去除这些国家代码:"+86"(大陆),"+886"(台湾),"+852"(香港),"+853"(澳门),"+84"(越南) ,"+60"(马来西亚)
需要注意的是台湾的手机号码比较特殊,保留前缀0
举例:
大陆:+86 12345678910 处理后12345678910
香港:+852 12345678910 处理后12345678910
澳门:+853 12345678910 处理后12345678910
越南:+84 12345678910 处理后12345678910
马来西亚:+60 12345678910 处理后 12345678910
台湾:+886 12345678910 处理后012345678910
Java、samli、baksmali、dex2jar、jd-gui、apktool这些工具和环境请自备,使用方法请自行摸索。
Dex或odex反编译成smali汇编代码用于修改。
Dex转为jar,用于修改时对照java代码。
以下+号代表增加行,-号代表删除行。
一、com\pantech\app\mms\config\SystemHelpers.java
目标代码分析:
public static String getPhoneNumber()
{
String str = ((TelephonyManager)sContext.getSystemService("phone")).getLine1Number();
if (str != null)
return str.replace("+82", "0");
return "";
}
要改为
public static String getPhoneNumber()
{
String str = ((TelephonyManager)sContext.getSystemService("phone")).getLine1Number();
if (str != null)
return str.replace("+82", "0").replace("+86", "").replace("+886", "0").replace("+852", "").replace("+853", "").replace("+84", "").replace("+60", "");
return "";
}
接下来修改smali汇编
com\pantech\app\mms\config\SystemHelpers.smali
const-string v2, "+82"
const-string v3, "0"
invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
move-result-object v0
+ const-string v2, "+86"
+
+ const-string v3, ""
+
+ invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ const-string v2, "+886"
+
+ const-string v3, "0"
+
+ invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ const-string v2, "+852"
+
+ const-string v3, ""
+
+ invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ const-string v2, "+853"
+
+ const-string v3, ""
+
+ invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ const-string v2, "+84"
+
+ const-string v3, ""
+
+ invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ const-string v2, "+60"
+
+ const-string v3, ""
+
+ invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
.line 100
:goto_0
return-object v0
.line 97
:cond_0
二、com\pantech\app\mms\data\SmsPersister.java
目标代码分析:
if ((!FeatureConfig.isSKTVendor()) || (!str1.startsWith("+82")))
break label200;
str1 = str1.replace("+82", "0");
break label200;
改为
if (str1.startsWith("+82"))
{
str1 = str1.replace("+82", "0");
break label200;
}
if (str1.startsWith("+86"))
{
str1 = str1.replace("+86", "");
break label200;
}
if (str1.startsWith("+886"))
{
str1 = str1.replace("+886", "0");
break label200;
}
if (str1.startsWith("+852"))
{
str1 = str1.replace("+852", "");
break label200;
}
if (str1.startsWith("+853"))
{
str1 = str1.replace("+853", "");
break label200;
}
if (str1.startsWith("+84"))
{
str1 = str1.replace("+84", "");
break label200;
}
if (!str1.startsWith("+60"))
break label200;
str1 = str1.replace("+60", "");
break label200;
接下来修改smali汇编
com\pantech\app\mms\data\SmsPersister.smali
if-eqz v20, :cond_10
.line 763
const-string v6, ""
.line 770
- :cond_1
+ :cond_36
:goto_2
const-string v20, "address"
move-object/from16 v0, v17
move-object/from16 v1, v20
@@ -2647,18 +2647,12 @@
goto/16 :goto_1
.line 764
.end local v3 #destPort:I
.restart local v6 #mAddress:Ljava/lang/String;
:cond_10
- invoke-static {}, Lcom/pantech/app/mms/config/FeatureConfig;->isSKTVendor()Z
-
- move-result v20
-
- if-eqz v20, :cond_1
-
.line 765
const-string v20, "+82"
move-object/from16 v0, v20
invoke-virtual {v6, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
@@ -2667,12 +2661,180 @@
if-eqz v20, :cond_1
.line 766
const-string v20, "+82"
+ const-string v21, "0"
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v6, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v6
+
+ goto/16 :goto_2
+
+ :cond_1
+
+ const-string v20, "+86"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v6, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_31
+
+ const-string v20, "+86"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v6, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v6
+
+ goto/16 :goto_2
+
+ :cond_31
+
+ const-string v20, "+886"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v6, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_32
+
+ const-string v20, "+886"
+
+ const-string v21, "0"
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v6, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v6
+
+ goto/16 :goto_2
+
+ :cond_32
+
+ const-string v20, "+852"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v6, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_33
+
+ const-string v20, "+852"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v6, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v6
+
+ goto/16 :goto_2
+
+ :cond_33
+
+ const-string v20, "+853"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v6, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_34
+
+ const-string v20, "+853"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v6, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v6
+
+ goto/16 :goto_2
+
+ :cond_34
+
+ const-string v20, "+84"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v6, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_35
+
+ const-string v20, "+84"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v6, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v6
+
+ goto/16 :goto_2
+
+ :cond_35
+
+ const-string v20, "+60"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v6, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_36
+
+ const-string v20, "+60"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v6, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v6
+
+ goto/16 :goto_2
+
const-string v21, "0"
move-object/from16 v0, v20
move-object/from16 v1, v21
三、com\pantech\app\mms\ui\ComposeMessageActivity.java
目标代码分析:
if ((FeatureConfig.isLGVendor()) && (str1.startsWith("+")))
{
if (str1.startsWith("+82"))
{
String str3 = str1.replace("+82", "0");
str1 = str3.substring(0, str3.length());
i3++;
}
}
改为
if (str1.startsWith("+"))
{
if (str1.startsWith("+82"))
{
String str9 = str1.replace("+82", "0");
str1 = str9.substring(0, str9.length());
i3++;
}
if (str1.startsWith("+86"))
{
String str8 = str1.replace("+86", "");
str1 = str8.substring(0, str8.length());
i3++;
}
if (str1.startsWith("+886"))
{
String str7 = str1.replace("+886", "0");
str1 = str7.substring(0, str7.length());
i3++;
}
if (str1.startsWith("+852"))
{
String str6 = str1.replace("+852", "");
str1 = str6.substring(0, str6.length());
i3++;
}
if (str1.startsWith("+853"))
{
String str5 = str1.replace("+853", "");
str1 = str5.substring(0, str5.length());
i3++;
}
if (str1.startsWith("+84"))
{
String str4 = str1.replace("+84", "");
str1 = str4.substring(0, str4.length());
i3++;
}
if (str1.startsWith("+60"))
{
String str3 = str1.replace("+60", "");
str1 = str3.substring(0, str3.length());
i3++;
}
}
接下来修改smali汇编
com\pantech\app\mms\ui\ComposeMessageActivity.smali
.line 2733
invoke-virtual {v13}, Ljava/lang/String;->length()I
move-result v6
- .line 2735
- invoke-static {}, Lcom/pantech/app/mms/config/FeatureConfig;->isLGVendor()Z
-
- move-result v20
-
- if-eqz v20, :cond_5
.line 2736
const-string v20, "+"
move-object/from16 v0, v20
@@ -1422,13 +1416,253 @@
invoke-virtual {v13, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v13
.line 2740
add-int/lit8 v14, v14, 0x1
+
+ :cond_6
+ const-string v20, "+86"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v13, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_31
+
+ const-string v20, "+86"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v13
+
+ const/16 v20, 0x0
+
+ invoke-virtual {v13}, Ljava/lang/String;->length()I
+
+ move-result v21
+
+ move/from16 v0, v20
+
+ move/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object v13
+
+ add-int/lit8 v14, v14, 0x1
+
+ :cond_31
+
+ const-string v20, "+886"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v13, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_32
+
+ const-string v20, "+886"
+
+ const-string v21, "0"
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v13
+
+ const/16 v20, 0x0
+
+ invoke-virtual {v13}, Ljava/lang/String;->length()I
+
+ move-result v21
+
+ move/from16 v0, v20
+
+ move/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object v13
+
+ add-int/lit8 v14, v14, 0x1
+
+ :cond_32
+
+ const-string v20, "+852"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v13, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_33
+
+ const-string v20, "+852"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v13
+
+ const/16 v20, 0x0
+
+ invoke-virtual {v13}, Ljava/lang/String;->length()I
+
+ move-result v21
+
+ move/from16 v0, v20
+
+ move/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object v13
+
+ add-int/lit8 v14, v14, 0x1
+
+ :cond_33
+
+ const-string v20, "+853"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v13, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_34
+
+ const-string v20, "+853"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v13
+
+ const/16 v20, 0x0
+
+ invoke-virtual {v13}, Ljava/lang/String;->length()I
+
+ move-result v21
+
+ move/from16 v0, v20
+
+ move/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object v13
+
+ add-int/lit8 v14, v14, 0x1
+
+ :cond_34
+
+ const-string v20, "+84"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v13, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_35
+
+ const-string v20, "+84"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v13
+
+ const/16 v20, 0x0
+
+ invoke-virtual {v13}, Ljava/lang/String;->length()I
+
+ move-result v21
+
+ move/from16 v0, v20
+
+ move/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object v13
+
+ add-int/lit8 v14, v14, 0x1
+
+ :cond_35
+
+ const-string v20, "+60"
+
+ move-object/from16 v0, v20
+
+ invoke-virtual {v13, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v20
+
+ if-eqz v20, :cond_36
+
+ const-string v20, "+60"
+
+ const-string v21, ""
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v13
+
+ const/16 v20, 0x0
+
+ invoke-virtual {v13}, Ljava/lang/String;->length()I
+
+ move-result v21
+
+ move/from16 v0, v20
+
+ move/from16 v1, v21
+
+ invoke-virtual {v13, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object v13
+
+ add-int/lit8 v14, v14, 0x1
+
.line 2748
:cond_5
invoke-static {v13}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v20
@@ -1445,13 +1679,13 @@
add-int/lit8 v18, v18, 0x1
.line 2754
goto :goto_2
.line 2742
- :cond_6
+ :cond_36
add-int/lit8 v14, v14, 0x1
.line 2743
goto :goto_2
.line 2757
四、com\pantech\app\mms\ui\MessageUtils.java
目标代码分析:
public static String getFromNumber()
{
String str = getLocalNumber();
if ((SystemHelpers.isCurrentInbound()) && (str.startsWith("+82")))
str = str.replace("+82", "0");
return str;
}
改为
public static String getFromNumber()
{
String str = getLocalNumber();
if ((SystemHelpers.isCurrentInbound()) && (str.startsWith("+82")))
str = str.replace("+82", "0");
if ((SystemHelpers.isCurrentInbound()) && (str.startsWith("+86")))
str = str.replace("+86", "");
if ((SystemHelpers.isCurrentInbound()) && (str.startsWith("+886")))
str = str.replace("+886", "0");
if ((SystemHelpers.isCurrentInbound()) && (str.startsWith("+852")))
str = str.replace("+852", "");
if ((SystemHelpers.isCurrentInbound()) && (str.startsWith("+853")))
str = str.replace("+853", "");
if ((SystemHelpers.isCurrentInbound()) && (str.startsWith("+84")))
str = str.replace("+84", "");
if ((SystemHelpers.isCurrentInbound()) && (str.startsWith("+60")))
str = str.replace("+60", "");
return str;
}
接下来修改smali汇编
com\pantech\app\mms\ui\MessageUtils.smali
const-string v1, "+82"
const-string v2, "0"
invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
move-result-object v0
.line 540
:cond_0
+ invoke-static {}, Lcom/pantech/app/mms/config/SystemHelpers;->isCurrentInbound()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_1
+
+ const-string v1, "+86"
+
+ invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v1
+
+ if-eqz v1, :cond_1
+
+ const-string v1, "+86"
+
+ const-string v2, ""
+
+ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ :cond_1
+
+ invoke-static {}, Lcom/pantech/app/mms/config/SystemHelpers;->isCurrentInbound()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_2
+
+ const-string v1, "+886"
+
+ invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v1
+
+ if-eqz v1, :cond_2
+
+ const-string v1, "+886"
+
+ const-string v2, "0"
+
+ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ :cond_2
+
+ invoke-static {}, Lcom/pantech/app/mms/config/SystemHelpers;->isCurrentInbound()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_3
+
+ const-string v1, "+852"
+
+ invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v1
+
+ if-eqz v1, :cond_3
+
+ const-string v1, "+852"
+
+ const-string v2, ""
+
+ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ :cond_3
+
+ invoke-static {}, Lcom/pantech/app/mms/config/SystemHelpers;->isCurrentInbound()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_4
+
+ const-string v1, "+853"
+
+ invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v1
+
+ if-eqz v1, :cond_4
+
+ const-string v1, "+853"
+
+ const-string v2, ""
+
+ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ :cond_4
+
+ invoke-static {}, Lcom/pantech/app/mms/config/SystemHelpers;->isCurrentInbound()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_5
+
+ const-string v1, "+84"
+
+ invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v1
+
+ if-eqz v1, :cond_5
+
+ const-string v1, "+84"
+
+ const-string v2, ""
+
+ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ :cond_5
+
+ invoke-static {}, Lcom/pantech/app/mms/config/SystemHelpers;->isCurrentInbound()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_6
+
+ const-string v1, "+60"
+
+ invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v1
+
+ if-eqz v1, :cond_6
+
+ const-string v1, "+60"
+
+ const-string v2, ""
+
+ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object v0
+
+ :cond_6
+
return-object v0
.end method
.method public static getLocalNumber()Ljava/lang/String;
.locals 1
五、com\pantech\app\mms\ui\RecipientsEditor.java
目标代码分析:
if ((FeatureConfig.isLGVendor()) && (paramString.startsWith("+")))
{
if (paramString.startsWith("+82"))
{
String str4 = paramString.replace("+82", "0");
String str5 = str4.substring(0, str4.length());
Toast.makeText(this.hComposer, 2131558467, 0).show();
addImageBtn(str5, true);
return false;
}
改为
if (paramString.startsWith("+"))
{
if (paramString.startsWith("+82"))
{
String str16 = paramString.replace("+82", "0");
String str17 = str16.substring(0, str16.length());
Toast.makeText(this.hComposer, 2131558467, 0).show();
addImageBtn(str17, true);
return false;
}
if (paramString.startsWith("+86"))
{
String str14 = paramString.replace("+86", "");
String str15 = str14.substring(0, str14.length());
Toast.makeText(this.hComposer, 2131558467, 0).show();
addImageBtn(str15, true);
return false;
}
if (paramString.startsWith("+886"))
{
String str12 = paramString.replace("+886", "0");
String str13 = str12.substring(0, str12.length());
Toast.makeText(this.hComposer, 2131558467, 0).show();
addImageBtn(str13, true);
return false;
}
if (paramString.startsWith("+852"))
{
String str10 = paramString.replace("+852", "");
String str11 = str10.substring(0, str10.length());
Toast.makeText(this.hComposer, 2131558467, 0).show();
addImageBtn(str11, true);
return false;
}
if (paramString.startsWith("+853"))
{
String str8 = paramString.replace("+853", "");
String str9 = str8.substring(0, str8.length());
Toast.makeText(this.hComposer, 2131558467, 0).show();
addImageBtn(str9, true);
return false;
}
if (paramString.startsWith("+84"))
{
String str6 = paramString.replace("+84", "");
String str7 = str6.substring(0, str6.length());
Toast.makeText(this.hComposer, 2131558467, 0).show();
addImageBtn(str7, true);
return false;
}
if (paramString.startsWith("+60"))
{
String str4 = paramString.replace("+60", "");
String str5 = str4.substring(0, str4.length());
Toast.makeText(this.hComposer, 2131558467, 0).show();
addImageBtn(str5, true);
return false;
}
接下来修改smali汇编
com\pantech\app\mms\ui\RecipientsEditor.smali
invoke-direct {p0, p1}, Lcom/pantech/app/mms/ui/RecipientsEditor;->isMaxDigitLength(Ljava/lang/String;)I
move-result v0
.line 2308
.local v0, isOverMaxLen:I
- invoke-static {}, Lcom/pantech/app/mms/config/FeatureConfig;->isLGVendor()Z
-
- move-result v4
-
- if-eqz v4, :cond_5
.line 2309
const-string v4, "+"
invoke-virtual {p1, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
@@ -1303,12 +1298,241 @@
invoke-virtual {p0, p1, v3}, Lcom/pantech/app/mms/ui/RecipientsEditor;->addImageBtn(Ljava/lang/String;Z)V
goto :goto_0
.line 2318
:cond_4
+
+ const-string v4, "+86"
+
+ invoke-virtual {p1, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_31
+
+ const-string v4, "+86"
+
+ const-string v5, ""
+
+ invoke-virtual {p1, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p1}, Ljava/lang/String;->length()I
+
+ move-result v4
+
+ invoke-virtual {p1, v2, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object p1
+
+ iget-object v4, p0, Lcom/pantech/app/mms/ui/RecipientsEditor;->hComposer:Lcom/pantech/app/mms/ui/ComposeMessageActivity;
+
+ invoke-static {v4, v7, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
+
+ move-result-object v4
+
+ invoke-virtual {v4}, Landroid/widget/Toast;->show()V
+
+ invoke-virtual {p0, p1, v3}, Lcom/pantech/app/mms/ui/RecipientsEditor;->addImageBtn(Ljava/lang/String;Z)V
+
+ goto :goto_0
+
+ :cond_31
+
+ const-string v4, "+886"
+
+ invoke-virtual {p1, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_32
+
+ const-string v4, "+886"
+
+ const-string v5, "0"
+
+ invoke-virtual {p1, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p1}, Ljava/lang/String;->length()I
+
+ move-result v4
+
+ invoke-virtual {p1, v2, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object p1
+
+ iget-object v4, p0, Lcom/pantech/app/mms/ui/RecipientsEditor;->hComposer:Lcom/pantech/app/mms/ui/ComposeMessageActivity;
+
+ invoke-static {v4, v7, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
+
+ move-result-object v4
+
+ invoke-virtual {v4}, Landroid/widget/Toast;->show()V
+
+ invoke-virtual {p0, p1, v3}, Lcom/pantech/app/mms/ui/RecipientsEditor;->addImageBtn(Ljava/lang/String;Z)V
+
+ goto :goto_0
+
+ :cond_32
+
+ const-string v4, "+852"
+
+ invoke-virtual {p1, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_33
+
+ const-string v4, "+852"
+
+ const-string v5, ""
+
+ invoke-virtual {p1, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p1}, Ljava/lang/String;->length()I
+
+ move-result v4
+
+ invoke-virtual {p1, v2, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object p1
+
+ iget-object v4, p0, Lcom/pantech/app/mms/ui/RecipientsEditor;->hComposer:Lcom/pantech/app/mms/ui/ComposeMessageActivity;
+
+ invoke-static {v4, v7, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
+
+ move-result-object v4
+
+ invoke-virtual {v4}, Landroid/widget/Toast;->show()V
+
+ invoke-virtual {p0, p1, v3}, Lcom/pantech/app/mms/ui/RecipientsEditor;->addImageBtn(Ljava/lang/String;Z)V
+
+ goto :goto_0
+
+ :cond_33
+
+ const-string v4, "+853"
+
+ invoke-virtual {p1, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_34
+
+ const-string v4, "+853"
+
+ const-string v5, ""
+
+ invoke-virtual {p1, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p1}, Ljava/lang/String;->length()I
+
+ move-result v4
+
+ invoke-virtual {p1, v2, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object p1
+
+ iget-object v4, p0, Lcom/pantech/app/mms/ui/RecipientsEditor;->hComposer:Lcom/pantech/app/mms/ui/ComposeMessageActivity;
+
+ invoke-static {v4, v7, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
+
+ move-result-object v4
+
+ invoke-virtual {v4}, Landroid/widget/Toast;->show()V
+
+ invoke-virtual {p0, p1, v3}, Lcom/pantech/app/mms/ui/RecipientsEditor;->addImageBtn(Ljava/lang/String;Z)V
+
+ goto :goto_0
+
+ :cond_34
+
+ const-string v4, "+84"
+
+ invoke-virtual {p1, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_35
+
+ const-string v4, "+84"
+
+ const-string v5, ""
+
+ invoke-virtual {p1, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p1}, Ljava/lang/String;->length()I
+
+ move-result v4
+
+ invoke-virtual {p1, v2, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object p1
+
+ iget-object v4, p0, Lcom/pantech/app/mms/ui/RecipientsEditor;->hComposer:Lcom/pantech/app/mms/ui/ComposeMessageActivity;
+
+ invoke-static {v4, v7, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
+
+ move-result-object v4
+
+ invoke-virtual {v4}, Landroid/widget/Toast;->show()V
+
+ invoke-virtual {p0, p1, v3}, Lcom/pantech/app/mms/ui/RecipientsEditor;->addImageBtn(Ljava/lang/String;Z)V
+
+ goto :goto_0
+
+ :cond_35
+
+ const-string v4, "+60"
+
+ invoke-virtual {p1, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_36
+
+ const-string v4, "+60"
+
+ const-string v5, ""
+
+ invoke-virtual {p1, v4, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p1}, Ljava/lang/String;->length()I
+
+ move-result v4
+
+ invoke-virtual {p1, v2, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
+
+ move-result-object p1
+
+ iget-object v4, p0, Lcom/pantech/app/mms/ui/RecipientsEditor;->hComposer:Lcom/pantech/app/mms/ui/ComposeMessageActivity;
+
+ invoke-static {v4, v7, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
+
+ move-result-object v4
+
+ invoke-virtual {v4}, Landroid/widget/Toast;->show()V
+
+ invoke-virtual {p0, p1, v3}, Lcom/pantech/app/mms/ui/RecipientsEditor;->addImageBtn(Ljava/lang/String;Z)V
+
+ goto :goto_0
+
+ :cond_36
+
iget-object v3, p0, Lcom/pantech/app/mms/ui/RecipientsEditor;->hComposer:Lcom/pantech/app/mms/ui/ComposeMessageActivity;
invoke-static {v3, v7, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
move-result-object v3
六、com\pantech\app\mms\util\StringUtils.java
目标代码分析:
public static String replaceInternationalCode(String paramString)
{
if (!TextUtils.isEmpty(paramString))
paramString = paramString.replace("+82", "0").replace("+", "");
return paramString;
}
改为
public static String replaceInternationalCode(String paramString)
{
if (!TextUtils.isEmpty(paramString))
paramString = paramString.replace("+82", "0").replace("+86", "").replace("+886", "0").replace("+852", "").replace("+853", "").replace("+60", "").replace("+84", "").replace("+", "");
return paramString;
}
接下来修改smali汇编
com\pantech\app\mms\util\StringUtils.smali
const-string v0, "+82"
const-string v1, "0"
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+ move-result-object p0
+
+ const-string v0, "+86"
+ const-string v1, ""
+ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p0
+
+ const-string v0, "+886"
+
+ const-string v1, "0"
+
+ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p0
+
+ const-string v0, "+852"
+
+ const-string v1, ""
- invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p0
+
+ const-string v0, "+853"
+
+ const-string v1, ""
+
+ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p0
+
+ const-string v0, "+60"
+
+ const-string v1, ""
+
+ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p0
+
+ const-string v0, "+84"
+
+ const-string v1, ""
+
+ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+
+ move-result-object p0
+
+ const-string v0, "+"
+
+ const-string v1, ""
+
+ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
move-result-object p0
.line 726
:cond_0
return-object p0