起名软件vip功能分析
本帖最后由 白云点缀的蓝 于 2021-11-6 10:43 编辑话不多说,我们先安装进模拟器,看看有没有什么关键信息
可以看到如下信息
我们先用android killer反编译一下,
然后我们搜索下提示
搜索到如下信息
我们一个一个去看看,
这三个关键信息转java代码后,都经过了类似的代码,我只放一张图片,因为其他图的代码都类似,几乎一模一样
我们分析下关键代码
public void onCheckedChanged(RadioGroup arg5, int arg6) {
RadioButton radioButton = (RadioButton)MainActivity.this.findViewById(arg5.getCheckedRadioButtonId());
if(GlobalVar.getInstance().GetVip()) {
switch(arg5.getCheckedRadioButtonId()) {
case 0x7F060039: {// id:wuxingj
MainActivity.this.wuxing = "金";
return;
}
case 0x7F06003A: {// id:wuxingm
break;
}
case 0x7F06003B: {// id:wuxings
MainActivity.this.wuxing = "水";
return;
}
case 0x7F06003C: {// id:wuxingt
MainActivity.this.wuxing = "土";
return;
}
case 0x7F06003D: {// id:wuxingh
MainActivity.this.wuxing = "火";
return;
}
default: {
return;
}
}
MainActivity.this.wuxing = "木";
return;
}
radioButton.setChecked(false);
new AlertDialog.Builder(MainActivity.this).setTitle("会员提示").setMessage("VIP会员,可以选择五行。升级VIP会员请点击右下角会员专区!").setPositiveButton("确定", null).show();
}
从上面的代码可以知道GlobalVar.getInstance().GetVip()这个值如果为false,就执行radioButton.setChecked(false);,并且弹升级广告的弹窗
我们找一下GetVip这个方法在哪,
我们看下GetVip方法
public boolean GetVip() {
return this.SessenID.equals("1");
}
smali代码
# virtual methods
.method public GetVip()Z
.locals 3
.prologue
.line 82
const/4 v0, 0x0
.line 83
.local v0, "Ret":Z
iget-object v1, p0, Lcom/meiyiming/gsname/GlobalVar;->SessenID:Ljava/lang/String;
const-string v2, "1"
invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_0
.line 85
const/4 v0, 0x1
.line 88
:cond_0
return v0
.end method
从上面方法可知,v1一定不等于1,因为his.SessenID不等于1,
我们可以把下面这句的eqz改为nez,或者把下面这句删除,
if-eqz v1, :cond_0
然后我们编译,安装进模拟器看看效果,
经过测试,vip功能已可以正常使用课件下载地址:https://starrysp.lanzouw.com/ipgwfnebvwb
学习学习了
学习学习了 学习学习了
看一看功能分析!
学习学习了 学习学习了 楼主辛苦了,谢谢楼主,感谢楼主分享,楼主好人一生平安!!! 学习学习了 学习{:5_116:}