本帖最后由 sleepyou 于 2021-04-06 22:49 编辑
话不多说,我们先安装进模拟器,看看有没有什么关键信息 可以看到如下信息
我们先用android killer反编译一下, 然后我们搜索下提示 搜索到如下信息
我们一个一个去看看, 这三个关键信息转码后,都经过了类似的代码,我只放一张图片,因为其他图的代码都类似,几乎一模一样
我们分析下关键代码
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"); }
# 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
然后我们编译,安装进模拟器看看效果,
|