大神论坛

找回密码
快速注册
查看: 265 | 回复: 0

[Android] 针对某起名软件app vip功能的逆向分析

主题

帖子

5

积分

初入江湖

UID
23
积分
5
精华
威望
10 点
违规
大神币
68 枚
注册时间
2021-03-21 09:25
发表于 2021-04-06 22:49
本帖最后由 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


然后我们编译,安装进模拟器看看效果,

返回顶部