|  | 
 
| WIFI旌旗灯号加强器版本:v9.0 作者:JokerST
 
 
 在手机利用助手里面看到良多人在用这个工具,可是评价都是渣渣,须要积分什么的才干硬加快.然后我就试用了下,后果没感到多显明.简直须要积分.
 未破解前只能应用通俗的旌旗灯号通道优化.如图:
 
   点击加快后会主动跳转获取积分的页面.
 1.破解东西:
 Android Killer
 2.收集线索:
 经由过程试用,采集可应用信息.假如要害词:积分 获取 当即加快等等.这里我就用"获取100积分永远免费激活"这个提醒信息,做线索进行追查.
 3.追查线索
 反编译后习惯性的打开"res\values.xml",刚打开,弄得我也是一愣.竟然没有找到这个提醒的字符串.看来作者也是不诚实哈.不妨,直接应用搜刮功效搜刮"获取100积分永远免费激活"即可.
 在"\res\layout\activity_hardware.xml"中搜到了,如下部门相干代码.
 [Asm] 纯文本查看 复制代码
 复制代码    <RelativeLayout android:id="@id/v_info" android:layout_width="fill_parent" android:layout_height="70.0dip" android:layout_below="@id/v_state">
        <Button android:textSize="14.0sp" android:textColor="#ffffffff" android:gravity="center" android:id="@id/btn_info_action" android:background="@drawable/bg_btn_hardware_action" android:visibility="visible" android:layout_width="240.0dip" android:layout_height="45.0dip" android:layout_marginTop="10.0dip" android:text="获取100积分永远免费激活" android:layout_centerHorizontal="true" />
 
        <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/tv_info" android:background="#3c000000" android:paddingLeft="12.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="30.0dip" android:text="硬件加快驱动已预备
 停当
 ..." android:layout_alignParentBottom="true" />
 
        <TextView android:textSize="16.0sp" android:textColor="#ffffffff" android:id="@id/tv_info_ok" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8.0dip" android:text="硬件加快已完成" android:layout_centerHorizontal="true" />
 
    </RelativeLayout>
提醒信息找到了,那么就可以往前看挪用."android:id="@id/btn_info_action",可经由过程"android:id"的值来定位.然后接着搜刮"btn_info_action".留意,这时辰我们可不是找xml文件,而是找smali源码文件.
 搜刮到了4个,3个是xml文件,剩下一个smali文件.没啥说的,在"\smali\com\syezon\wifi\R$id.smali"找到如下代码
 [Asm] 纯文本查看 复制代码
 复制代码.field public static final btn_info_action:I = 0x7f08003f
这是一个挪用接口,挪用自0x7f08003f这个地址.然后接着搜刮"0x7f08003f".
 在"\smali\com\syezon\wifi\activity\HardwareActivity.smali"中搜到了这个地址.
 [Asm] 纯文本查看 复制代码
 
 4.定位推理
 终极定位文件HardwareActivity.smali.我们可以猜测这个文件就是与积分限制有关的文件.那就细心的看下这个文件源码.
 发明可疑代码段pswitch_0,如下
 [Asm] 纯文本查看 复制代码
 复制代码:pswitch_0
    #v0=(Integer);v1=(Uninit);v2=(PosByte);v3=(Uninit);
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->c:Lcom/syezon/wifi/MyActivity;
    #v0=(Reference,Lcom/syezon/wifi/MyActivity;);
    invoke-static {v0, v5}, Lcom/syezon/wifi/activity/HardwareActivity;->a(Landroid/content/Context;Z)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->c:Lcom/syezon/wifi/MyActivity;
    const-string v1, "CLICK_ACT_HARD"
    #v1=(Reference,Ljava/lang/String;);
    invoke-static {v0, v1}, Lv;->a(Landroid/content/Context;Ljava/lang/String;)V
    iget v0, p1, Landroid/os/Message;->arg1:I
    #v0=(Integer);
    sget v1, Lt;->a:I
    #v1=(Integer);
    if-ge v0, v1, :cond_0  //留意看这里,这是个判定
 语句.说明
 :假如
 V0>=V1,就跳转到cond_0事务
 .
 
    iget-object v1, p0, Lcom/syezon/wifi/activity/HardwareActivity;->c:Lcom/syezon/wifi/MyActivity;
    #v1=(Reference,Lcom/syezon/wifi/MyActivity;);
    new-instance v2, Ljava/lang/StringBuilder;
    #v2=(UninitRef,Ljava/lang/StringBuilder;);
    const-string v3, "\u5f53\u524d\u79ef\u5206\uff1a"  //解码:当前积分
    #v3=(Reference,Ljava/lang/String;);
    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
    #v2=(Reference,Ljava/lang/StringBuilder;);
    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    move-result-object v0
    #v0=(Reference,Ljava/lang/StringBuilder;);
    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v0
    invoke-static {v1, v0}, Lq;->a(Landroid/content/Context;Ljava/lang/String;)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->c:Lcom/syezon/wifi/MyActivity;
    invoke-static {v0}, Lcom/syezon/sdk/os/slidingbnxc;->getInstance(Landroid/content/Context;)Lcom/syezon/sdk/os/slidingbnxc;
    move-result-object v0
    invoke-virtual {v0}, Lcom/syezon/sdk/os/slidingbnxc;->sligpsd()V
    goto :goto_0
接着这段代码往下看,找到cond_0代码段
 [Asm] 纯文本查看 复制代码
 复制代码:cond_0
    #v0=(Integer);v1=(Integer);v2=(PosByte);v3=(Uninit);
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->c:Lcom/syezon/wifi/MyActivity;
    #v0=(Reference,Lcom/syezon/wifi/MyActivity;);
    invoke-static {v0}, Lt;->b(Landroid/content/Context;)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->c:Lcom/syezon/wifi/MyActivity;
    const-string v1, "\u6fc0\u6d3b\u6210\u529f"  //解码:激活胜利
 
    #v1=(Reference,Ljava/lang/String;);
    invoke-static {v0, v1}, Lq;->a(Landroid/content/Context;Ljava/lang/String;)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->c:Lcom/syezon/wifi/MyActivity;
    invoke-static {v0}, Lcom/syezon/sdk/os/slidingbtxc;->getInstance(Landroid/content/Context;)Lcom/syezon/sdk/os/slidingbtxc;
    move-result-object v0
    sget v1, Lt;->a:I
    #v1=(Integer);
    invoke-virtual {v0, v1}, Lcom/syezon/sdk/os/slidingbtxc;->sligtsd(I)Z
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->g:Landroid/widget/LinearLayout;
    invoke-virtual {v0, v4}, Landroid/widget/LinearLayout;->setEnabled(Z)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->g:Landroid/widget/LinearLayout;
    invoke-virtual {v0, v2}, Landroid/widget/LinearLayout;->setVisibility(I)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->f:Landroid/widget/RelativeLayout;
    invoke-virtual {v0, v2}, Landroid/widget/RelativeLayout;->setVisibility(I)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->k:Landroid/widget/Button;
    invoke-virtual {v0, v2}, Landroid/widget/Button;->setVisibility(I)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->k:Landroid/widget/Button;
    invoke-virtual {v0, v4}, Landroid/widget/Button;->setEnabled(Z)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->n:Landroid/view/View;
    invoke-virtual {v0, v2}, Landroid/view/View;->setVisibility(I)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->h:Landroid/widget/LinearLayout;
    invoke-virtual {v0, v4}, Landroid/widget/LinearLayout;->setVisibility(I)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->h:Landroid/widget/LinearLayout;
    invoke-virtual {v0, v5}, Landroid/widget/LinearLayout;->setEnabled(Z)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->f:Landroid/widget/RelativeLayout;
    invoke-virtual {v0, v4}, Landroid/widget/RelativeLayout;->setVisibility(I)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->l:Landroid/widget/TextView;
    invoke-virtual {v0, v4}, Landroid/widget/TextView;->setVisibility(I)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->o:Landroid/widget/TextView;
    invoke-virtual {v0, v4}, Landroid/widget/TextView;->setVisibility(I)V
    iget-object v0, p0, Lcom/syezon/wifi/activity/HardwareActivity;->c:Lcom/syezon/wifi/MyActivity;
    const-string v1, "DONE_ACT_HARD"
    #v1=(Reference,Ljava/lang/String;);
    invoke-static {v0, v1}, Lv;->a(Landroid/content/Context;Ljava/lang/String;)V
    goto/16 :goto_0
经由过程cond代码片断,我们就可以基础判断.pswitch_0中的判定是要害,假如V0>=V1,就跳转到cond_0,而cond_0中含有激活胜利的字样.聪慧人就会清楚了吧.
 5.理论料想
 假如V0>=V1,就跳转到cond_0 激活胜利的处所.那么我们就可以猜测,V0是你当前积分.V1就是"100"积分这个尺度.理论料想下,我们用户安装后的积分确定不会年夜于或即是100吧.要否则我们就可以直接应用硬件加快功效了是吧.那么我们就可以修正这个判定前提.让它假如V0<=V1,就跳转到cond_0.如许是不是就到达了假如用户积分小于或即是100,就直接跳转到激活胜利的目标呢.
 6.修正源码
 修正之前想先懂得下Smile语法:
 (这里我为什么不消JD-Gui东西直接查看Java格局的源码呢.就由于Jd-Gui它不克不及直接修正源码.与其往费工夫经由过程Java定位源码后,然后在经由过程本身的懂得往回心成Smile代码.费劲啊.不如直接往熟习,进修Smile语法不更好?当然,有些其实是找不到,或看不懂Smile的话,仍是用Jd-Gu往看源码吧.否则懂得起来会跟费劲)
 [Asm] 纯文本查看 复制代码
 复制代码Smali基础语法
 
.field private isFlag:z  界说变量
 
.method  方式
 
.parameter  方式参数
 
.prologue  方式开端
 
 
.line 12  此方式位于第12行
 
invoke-super  挪用父函数
 
const/high16  v0, 0x7fo3  把0x7fo3赋值给v0
invoke-direct  挪用函数
 
return-void  函数返回void
.end method  函数停止
 
new-instance  创立实例
 
iput-object  对象赋值
iget-object  挪用对象
 
invoke-static  挪用静态函数
 
前提跳转分支:
 
"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_**
 熟习Smile语法后就开端修正吧
 [Asm] 纯文本查看 复制代码
 改为
 [Asm] 纯文本查看 复制代码
 保留后,反编译出来碰运气若何~~~
 
  之前还会有"获取100积分永远免费激活"这个页面,我们不消理会,直接点击"当即晋升加快"或"获取100积分永远免费激活"即可.然后就会再次跳转到如上阿谁加快界面.刹时截图,可算是把激活胜利这四个字也给截上往了.会弹出一个黑黑的小窗口,然后开端无线模块优化,硬件解锁加快什么的.然后就加快胜利....后
 | 
 |