|
|
打开软件我们进入到会员界面查看
可以看到我们目前是免费版本
接下来我们使用mt管理器进行逆向破解
首先进入dex编辑里进行资源查询 输入类型进行查找
点击复制 在去搜索里面搜索 点击进去
- .method private H()Ljava/lang/String;
- .registers 4
- iget-object v0, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->aE:Lcom/netqin/ps/config/Preferences;
- invoke-virtual {v0}, Lcom/netqin/ps/config/Preferences;->getUserLevelName()Ljava/lang/String;
- move-result-object v0
- invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
- move-result v1
- const/4 v2, 0x1
- if-nez v1, :cond_18
- const-string v1, "null"
- invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
- move-result v1
- if-eqz v1, :cond_16
- goto :goto_18
- :cond_16
- const/4 v1, 0x0
- goto :goto_19
- :cond_18
- :goto_18
- const/4 v1, 0x1
- :goto_19
- if-eqz v1, :cond_2d
- invoke-static {}, Lcom/netqin/ps/b/d;->a()Z
- move-result v0
- if-ne v0, v2, :cond_29
- const v0, 0x7f0c03c3
- :goto_24
- invoke-virtual {p0, v0}, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->getString(I)Ljava/lang/String;
- move-result-object v0
- goto :goto_2d
- :cond_29
- const v0, 0x7f0c0436
- goto :goto_24
- :cond_2d
- :goto_2d
- invoke-static {v2}, Lcom/netqin/m;->a(I)Z
- move-result v1
- if-eqz v1, :cond_4e
- new-instance v1, Ljava/lang/StringBuilder;
- invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
- const v2, 0x
- invoke-virtual {p0, v2}, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->getString(I)Ljava/lang/String;
- move-result-object v2
- invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
- const-string v2, " "
- invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
- invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
- invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
- move-result-object v0
- :cond_4e
- return-object v0
- .end method
复制代码 这里我们进入a(I)Z方法里面进行修改
- .method public static a(I)Z
- .registers 2
- const/4 v0, 0x2
- if-ne v0, p0, :cond_5
- const/4 p0, 0x1
- return p0
- :cond_5
- const/4 p0, 0x0
- return p0
- .end method
复制代码 直接设置为const/4 v0, 0x1 把前面的注释掉或者删除
然后退出去进入a()Z方法
- .method public static a()Z
- .registers 2
- invoke-static {}, Lcom/netqin/ps/config/Preferences;->getInstance()Lcom/netqin/ps/config/Preferences;
- move-result-object v0
- invoke-virtual {v0}, Lcom/netqin/ps/config/Preferences;->getNewUserLevel()I
- move-result v0
- const/16 v1, 0x20
- if-eq v0, v1, :cond_e
- const/4 v0, 0x1
- return v0
- :cond_e
- const/4 v0, 0x0
- return v0
- .end method
复制代码 这里也设置为const/4 v0, 0x1 强制为true
随后进入getNewUserLevel方法
- .method public getNewUserLevel()I
- .registers 4
- const/4 v0, 0x2
- invoke-static {v0}, Lcom/netqin/m;->a(I)Z
- move-result v0
- const/16 v1, 0x20
- if-eqz v0, :cond_15
- iget-object v0, p0, Lcom/netqin/ps/config/Preferences;->mPref:Lcom/netqin/localInfo/a/b/c;
- const-string v2, "new_user_level"
- invoke-virtual {v0, v2, v1}, Lcom/netqin/localInfo/a/b/c;->getInt(Ljava/lang/String;I)I
- move-result v0
- const/4 v2, 0x4
- if-ne v0, v2, :cond_15
- return v2
- :cond_15
- iget-object v0, p0, Lcom/netqin/ps/config/Preferences;->mPref:Lcom/netqin/localInfo/a/b/c;
- const-string v2, "new_user_level"
- invoke-virtual {v0, v2, v1}, Lcom/netqin/localInfo/a/b/c;->getInt(Ljava/lang/String;I)I
- move-result v0
- return v0
- .end method
复制代码 注释 #move-result v0 添加const/4 v0, 0x4
然后退到H代码的地方 往上滑找到f方法
- .method private F()V
- .registers 3
- iget-object v0, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->aE:Lcom/netqin/ps/config/Preferences;
- invoke-virtual {v0}, Lcom/netqin/ps/config/Preferences;->getUID()Ljava/lang/String;
- move-result-object v0
- iput-object v0, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->aI:Ljava/lang/String;
- iget-object v0, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->aE:Lcom/netqin/ps/config/Preferences;
- invoke-virtual {v0}, Lcom/netqin/ps/config/Preferences;->getNewUserLevel()I
- move-result v0
- iput v0, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->aJ:I
- new-instance v0, Ljava/lang/StringBuilder;
- const-string v1, "fill date userLevel is:"
- invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
- iget v1, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->aJ:I
- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
- sget-boolean v0, Lcom/netqin/s;->g:Z
- invoke-direct {p0}, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->G()Ljava/lang/String;
- move-result-object v0
- iget-object v1, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->M:Landroid/widget/TextView;
- invoke-virtual {v1, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
- iget-object v0, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->aE:Lcom/netqin/ps/config/Preferences;
- invoke-virtual {v0}, Lcom/netqin/ps/config/Preferences;->getServiceExpired()I
- move-result v0
- const/4 v1, -0x1
- if-eq v0, v1, :cond_45
- iget-object v0, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->aT:Landroid/view/View;
- invoke-virtual {v0}, Landroid/view/View;->getVisibility()I
- move-result v0
- if-nez v0, :cond_45
- iget-object v0, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->n:Landroid/widget/TextView;
- const v1, 0x7f0c03c3
- invoke-virtual {p0, v1}, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->getString(I)Ljava/lang/String;
- move-result-object v1
- invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
- return-void
- :cond_45
- invoke-direct {p0}, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->H()Ljava/lang/String;
- move-result-object v0
- iget-object v1, p0, Lcom/netqin/ps/ui/memeber/MemberAreaNewActivity;->n:Landroid/widget/TextView;
- invoke-virtual {v1, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
- return-void
- .end method
复制代码 进入getServiceExpired方法 这个是会员过期时间的
- .method public getServiceExpired()I
- .registers 4
- iget-object v0, p0, Lcom/netqin/ps/config/Preferences;->mPref:Lcom/netqin/localInfo/a/b/c;
- const-string v1, "service_expired"
- const/4 v2, -0x1
- invoke-virtual {v0, v1, v2}, Lcom/netqin/localInfo/a/b/c;->getInt(Ljava/lang/String;I)I
- move-result v0
- return v0
- .end method
复制代码 我们直接把invoke-virtual {v0, v1, v2}, Lcom/netqin/localInfo/a/b/c;->getInt(Ljava/lang/String;I)I
#move-result v0注释或者删除 然后把上面const/4 v2修改成const/4 v0
随后重新进入getUserLevelName方法来让会员页面显示高级会员
直接替换即可 就是删了几行代码
- .method public getUserLevelName()Ljava/lang/String;
- .registers 4
- const/4 v0, 0x0
- return-object v0
- .end method
复制代码 最后一直退出 然后重新打包 加签名 安装 进行测试
可以看到已经显示高级版本包括功能都是可以使用的
刚开始写 写的不好 有问题可以提出来 谢谢
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|