如有问题请斑竹提出,我会立刻整改,新人发帖不容易..
前言:
一直在潜水学习,吾爱刚回归 新手首发一帖,如有不正确请各位指出 内心有点芳(手动滑稽)
背景:
之前一直用本站大佬破解的“Wifi和蓝牙MAC修改器”,谁知他又有新的升级(之前版本是V2.3.0,现在升级为V4.3. 0)。参照大佬之前的方法索性将它破解了。
软件介绍:
1、本软件仅支持MTK 联发科CPU、手机必须ROOT、具体获取root权限,大家自己操作、懂的都知道。
2、本软件可以修改以下几项
串号 自动手动 单双串号
蓝牙 手动修改自动修改
WIFI地址 手动自动修改
序列号 自动手动
3、本软件支持
MT6589、MT6572、MT6582、MT6515、
MT6573、MT6513、MT6575、MT6515、
MT6577、MT6517、 MT6516 MAX 2G
等其他芯片。
4、已测试过的机型:
各种国产山寨MTK 四核手机、品牌机:OPPOr815t、
中兴U819、中兴V967S、中兴U807、中兴U817、中兴U795+、中兴U880F1、中兴U795、中兴V818、中兴U809、
华为G610S、联想A308T、联想A369、联想A269、联想A670T、联想A630、联想A820、联想A820T、联想A830、
联想A630t、联想A798t、联想A66、联想A789、联想A60+、联想A750、联想P700、酷派7295+、酷派8295、
夏新N808、佳通G2、小米红米1S移动版 等等没法全部写出来。
注意进入软件选择数据文件选项!!其它默认。
看一下软件的界面,以及注册报错的关键字,留作后面破解的关键入口点
一、首先查壳
我们使用通用的APK查壳工具:“ApkScan-PKID查壳工具”
看一下居然无壳(有壳开头难,无壳一身轻),很明显作为开发者安全意识很重要,如果有壳的话会阻挡大部分小白了。(扯远了——{:301_1003:})
二、拖入Android killer 开造
直接点击入口点进入软件的首页
接下来就用到开头,软件注册时出现的提示信息“ ”,在“工程搜索中”输入报错信息,并将字符串转化为Unicode(因为在JVM中、在内存中、在代码里声明的每一个char、String类型的变量中字符以unicode格式存在。)得到的搜索结果 所在路径和一开始从入口点进入的路径位子是一样的,由此可以说“授权码”是初始化窗体时就进行加载了。
通过点击咖啡杯“查看JAVA源码”,我们向下找“对不起,您输入的数据有误!”关键词。
public void btn1_click(View paramView) { if (this.editText.getText().toString().equals(GetSR())) //判断输入的授权码和GetSR方法中返回的值是否相等 { save(); //相等 则执行这些方法,也就是载入核心功能页面 showMain(); return; } paramView = new AlertDialog.Builder(this).create(); //不相等 则 弹出错误 提示信息 paramView.setTitle("数据错误"); paramView.setButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface paramAnonymousDialogInterface, int paramAnonymousInt) { CodeSigWindow.this.editText.setText(""); paramAnonymousDialogInterface.dismiss(); } }); paramView.setMessage("对不起,您输入的数据有误!"); paramView.show(); }
核心部分就在if判断处,我们只要将判断从原先的相等改为不相等,我们回到smali代码,来到if对应的smali代码处
.method public btn1_click(Landroid/view/View;)V .locals 3 .param p1, "view" # Landroid/view/View; .prologue .line 62 iget-object v1, p0, Lcom/mayor/codeSig/CodeSigWindow;->editText:Landroid/widget/EditText; invoke-virtual {v1}, Landroid/widget/EditText;->getText()Landroid/text/Editable; move-result-object v1 invoke-interface {v1}, Landroid/text/Editable;->toString()Ljava/lang/String; move-result-object v1 invoke-virtual {p0}, Lcom/mayor/codeSig/CodeSigWindow;->GetSR()Ljava/lang/String; move-result-object v2 invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-eqz v1, :cond_0 //此处是if判断的位置,只要将“eqz”改成“nez”,从原来的相等才执行,变成不等执行 .line 64 invoke-direct {p0}, Lcom/mayor/codeSig/CodeSigWindow;->save()V .line 65 invoke-virtual {p0}, Lcom/mayor/codeSig/CodeSigWindow;->showMain()V .line 81 :goto_0 return-void .line 67 :cond_0 new-instance v1, Landroid/app/AlertDialog$Builder; invoke-direct {v1, p0}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V .line 68 invoke-virtual {v1}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog; move-result-object v0 .line 69 .local v0, "dialog":Landroid/app/AlertDialog; const-string v1, "\u6570\u636e\u9519\u8bef" invoke-virtual {v0, v1}, Landroid/app/AlertDialog;->setTitle(Ljava/lang/CharSequence;)V .line 70 const-string v1, "\u786e\u5b9a" new-instance v2, Lcom/mayor/codeSig/CodeSigWindow$1; invoke-direct {v2, p0}, Lcom/mayor/codeSig/CodeSigWindow$1;-><init>(Lcom/mayor/codeSig/CodeSigWindow;)V invoke-virtual {v0, v1, v2}, Landroid/app/AlertDialog;->setButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V .line 78 const-string v1, "\u5bf9\u4e0d\u8d77\uff0c\u60a8\u8f93\u5165\u7684\u6570\u636e\u6709\u8bef\uff01" invoke-virtual {v0, v1}, Landroid/app/AlertDialog;->setMessage(Ljava/lang/CharSequence;)V .line 79 invoke-virtual {v0}, Landroid/app/AlertDialog;->show()V goto :goto_0.end method
之后重新编译,在手机上安装就可以了
我们在手机端 看一下效果,直接点击“进入程序”即可,这就是简单的爆破了。以下是核心功能的界面
注意:
本软件适用于MTK平台3G的移动设备(部分4G版本的也支持),使用前请备份NVRAM分区,以免修改后无法找回原始设备信息(包括IEMI、SN、Wifi和蓝牙的MAC等)。
smali 部分if判断学习
条件跳转分支:
"if-eq vA, vB, :cond_**" 如果vA等于vB则跳转到:cond_**
"if-ne vA, vB, :cond_**" 如果vA不等于vB则跳转到:cond_**
"if-lt vA, vB, :cond_**" 如果vA小于vB则跳转到:cond_**
"if-ge vA, vB, :cond_**" 如果vA大于等于vB则跳转到:cond_**
"if-gt vA, vB, :cond_**" 如果vA大于vB则跳转到:cond_**
"if-le vA, vB, :cond_**" 如果vA小于等于vB则跳转到:cond_**
"if-eqz vA, :cond_**" 如果vA等于0则跳转到:cond_**
"if-nez vA, :cond_**" 如果vA不等于0则跳转到:cond_**
"if-ltz vA, :cond_**" 如果vA小于0则跳转到:cond_**
"if-gez vA, :cond_**" 如果vA大于等于0则跳转到:cond_**
"if-gtz vA, :cond_**" 如果vA大于0则跳转到:cond_**
"if-lez vA, :cond_**" 如果vA小于等于0则跳转到:cond_**
总结:
虽然思路是借用大佬的,但是破解的过程还是挺有趣的,只有小白勤动手,多总结就离自己成为大佬的距离不远了。
请各位动动小手让我离“前途无量“组更进一步!!(可惜没有影视区,说不定发完这篇原创就能进了{:301_972:} )
文件下载地址暂时未公布,需要的朋友请在下方留言,看到后会第一时间更新下载地址。