[i=s] 本帖最后由 nemogz 于 2012-10-12 16:21 编辑 [/i]
发现篇
汉化过程中发现有个SHSimControlApp.apk,对应的是下图:
(这个界面的出现需要在打电话界面输入*#*#4669#*#*弹出)
取出apk对应的SHSimControlApp.odex,
再用apkdb的右键功能,查看class.dex的源码。
其中"SHSimControlCommon.class"(对应SHSimControlCommon.smali文件)有以下代码:
貌似只须改为:
即可任意数字解锁。
莫非就这样一破百破?欢迎高手不吝赐教。
[hr]
第一次修改
哈哈,等不到高手就自己来啰。
直接修改SHSimControlApp.apk反编译出来的SHSimControlCommon.smali
为
即可任意数字解锁!!!
由于买机时已解锁,替换前输入几个数字提示不对,替换后随便输入几个数字,解锁认证正确并自动重启,重启后还是已解锁状态,有无未解锁的帮忙试试。
BTW:
apkdb源码转换将一个switch转成一个switch和一个while,稍稍误导。
[hr]
第二次修改
事情没那么简单,重启没问题,拔电池断电后,SIM卡居然被锁,于是继续研究,上面的修改取消,将
改为
真正可以解锁的apk和odex:
浏览附件sh12c解锁V2.rar
发现篇
汉化过程中发现有个SHSimControlApp.apk,对应的是下图:
(这个界面的出现需要在打电话界面输入*#*#4669#*#*弹出)
取出apk对应的SHSimControlApp.odex,
代码:
java -jar baksmali-1.2.6.jar -x SHSimControlApp.odex
java -Xmx512M -jar smali-1.2.6.jar out -o classes.dex
其中"SHSimControlCommon.class"(对应SHSimControlCommon.smali文件)有以下代码:
代码:
private static int CheckPassWord()
{
return SHSimControlLib.sh_simcontrol_Check_InputCode(SHSimControlAppActivity.password);
}
protected static int GetStatus()
{
if (SHSimControlLib.sh_simcontrol_check_Status() == 0);
for (int i = 1; ; i = 0)
return i;
}
protected static int changeSimLock()
{
int i = 2;
switch (CheckPassWord())
{
default:
case 2:
case 0:
case 1:
}
while (true)
{
return i;
if (SHSimControlLib.sh_simcontrol_on() != 0)
continue;
i = 4;
continue;
if (SHSimControlLib.sh_simcontrol_off() != 0)
continue;
i = 3;
continue;
i = 1;
}
}
代码:
private static int CheckPassWord()
{
SHSimControlLib.sh_simcontrol_Check_InputCode(SHSimControlAppActivity.password);
return 2;
}
莫非就这样一破百破?欢迎高手不吝赐教。
[hr]
第一次修改
哈哈,等不到高手就自己来啰。
直接修改SHSimControlApp.apk反编译出来的SHSimControlCommon.smali
代码:
.method private static CheckPassWord()I
.locals 2
.prologue
.line 78
sget-object v1, Ljp/co/sharp/android/SHSimControlApp/SHSimControlAppActivity;->password:Ljava/lang/String;
invoke-static {v1}, Ljp/co/sharp/android/SHSimControlApp/SHSimControlLib;->sh_simcontrol_Check_InputCode(Ljava/lang/String;)I
move-result v0
.line 80
.local v0, res:I
return v0
.end method
代码:
.method private static CheckPassWord()I
.locals 2
.prologue
.line 78
sget-object v1, Ljp/co/sharp/android/SHSimControlApp/SHSimControlAppActivity;->password:Ljava/lang/String;
invoke-static {v1}, Ljp/co/sharp/android/SHSimControlApp/SHSimControlLib;->sh_simcontrol_Check_InputCode(Ljava/lang/String;)I
move-result v0
const/4 v0,0x02
.line 80
.local v0, res:I
return v0
.end method
由于买机时已解锁,替换前输入几个数字提示不对,替换后随便输入几个数字,解锁认证正确并自动重启,重启后还是已解锁状态,有无未解锁的帮忙试试。
BTW:
apkdb源码转换将一个switch转成一个switch和一个while,稍稍误导。
[hr]
第二次修改
事情没那么简单,重启没问题,拔电池断电后,SIM卡居然被锁,于是继续研究,上面的修改取消,将
代码:
.method protected static changeSimLock()I
.locals 3
.prologue
.line 40
const/4 v0, -0x1
.line 41
.local v0, res:I
const/4 v1, 0x2
.line 43
.local v1, result:I
invoke-static {}, Ljp/co/sharp/android/SHSimControlApp/SHSimControlCommon;->CheckPassWord()I
move-result v2
代码:
.method protected static changeSimLock()I
.locals 3
.prologue
.line 40
const/4 v0, -0x1
.line 41
.local v0, res:I
const/4 v1, 0x4
.line 43
.local v1, result:I
invoke-static {}, Ljp/co/sharp/android/SHSimControlApp/SHSimControlCommon;->CheckPassWord()I
move-result v2
const/4 v2, 0x0
浏览附件sh12c解锁V2.rar