大学生
 
- 金币
- 929
- 好评
- 22
- 信誉
- 116
|
本帖最后由 逍遥星晨 于 2022-11-18 23:29 编辑
适合小白的教程,大佬们飘过即可!(由于是小白教程,所以写的详细一些,只为刚刚接触逆向的能够看懂,因为我也是这样过来的,看见有的教程只有一个结果,确实是找不到任何思路,为什么是这样呢?所以今天就拿这个软件写个简单的帖子)
准备工具:mt管理器和测试软件零占星座28.4版本
声明:发帖仅供交流,不提供任何软件以及成品
软件无壳无签名验证,需要登录(手机号登录即可),不登录不显示会员情况
一、解锁会员
1、mt提取安装包【下图所示】
2、习惯性的去除签名校验,去除签名验证只有会员可以使用,免费的可以用np管理器代替【下图所示】
3、点击查看,进入到app内部。里面有常见的有assets文件,lib文件,META-INF文件,res文件,AndridManifest.xml文件,classes.dex文件和resources.arsc文件
4.然后点击classes.dex文件,选择dex++[
5.进去后全选,下图所示
6.点击常量,过滤会员。下图所示
7.找到尊贵VIP会员,点击它进行搜索,下图所示
8.搜出来一个结果,下图所示
9.然后点击它,会自动跳转到如下图所示的界面
10.在这里解释一下,为什么会选择尊贵的VIP会员,它的意思就是已经是会员啦,所以选它。在刚进来的这个页面,我们先往上划,看见一个跳转判断if-eqz v1, :cond_19b。在这里,就是判断是不是会员,也就是说,当V1等于0的时候它就跳到cond_19b。刚才也解释了,尊享vip会员就是会员。如果它跳转了就不是会员了,所以就不能让v1等于0.
接下来看看一下。这个V1的值在哪里。通过观察代码发现,V1的值是通过getisvip来获取的。前面已经分析过了。不让V1等于0就可以。那么我们就让V1等于1也就不等于0了,它也就不再跳转了,下面代码所示。点击getisvip进行跳转。下图所示
invoke-virtual {v0}, Lstar/goodhope/main/my/vip/VIPInfoModel;->getIsVip()Z
11.跳转进去后进行赋值const v0,0x1,下图所示
12.刚好在赋值会员这里,下面有一个方面名,getvipexpiretime,会员到期时间,这里就是进行会员时间赋值的,由于它返回的是return-object格式,那么我们赋值就要用const-string v0,""来对它进行赋值时间了,这里的双引号里面填写时间即可,例如const-string v0,"2099-12-12",下图所示
到这里,会员就解锁完成了。【记得要保存签名哦】
二,去除更新提示,如下图所示,进入软件的时候有一个提示更新,我们弄逆向的不能软件一更新就再来一次逆向吧,所示呢,就把这个更行给取消了。下图所示
方法一:找到AndroidManifest.xml,然后点击它,点击反编译,下图所示
进去以后,在下图所示框起来的地方就是版本号,在这里我们只需要把它现在的版本号改来比原来的版本号大就可以了。下图所示
改好如下图所示
然后保存签名安装即可【亲测这个软件这样修改可以去除更新提示】,有的软件更改版本号是不能去除更新的,那么就要用到其他方法了
方法二:通过进入软件的弹窗提示,我们找它的关键词,在classes.0dex中去查找
在这里,我们看见他有一个更新提示,那么我们就打开classes.dex,跟前面修改会员的时候一样,选择dex++,然后全选。进去以后选择常量,然后过滤更新,如下图所示
然后我们找到更新提示,并点击它进行搜索,如下图所示
搜索出来只有一个结果,如下图所示
然后我们点击它,它自己就会进行跳转,如下图所示
接下来我们来看一下代码,代码如下
method private showHint()V
.registers 4
.line 182
new-instance v0, Landroid/app/AlertDialog$Builder;
iget-object v1, p0, Lstar/goodhope/utils/UpdateUtil;->context:Landroid/content/Context;
const/4 v2, 0x5
invoke-direct {v0, v1, v2}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;I)V
iget-object v1, p0, Lstar/goodhope/utils/UpdateUtil;->context:Landroid/content/Context;
const-string v2, "更新提示"
invoke-static {v2, v1}, Lstar/goodhope/utils/MyUtil;->TranslateChar(Ljava/lang/String;Landroid/content/Context;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
move-result-object v0
iget-object v1, p0, Lstar/goodhope/utils/UpdateUtil;->updateInfo:Lstar/goodhope/utils/UpdateUtil$UpdateInfo;
iget-object v1, v1, Lstar/goodhope/utils/UpdateUtil$UpdateInfo;->content:Ljava/lang/String;
iget-object v2, p0, Lstar/goodhope/utils/UpdateUtil;->context:Landroid/content/Context;
invoke-static {v1, v2}, Lstar/goodhope/utils/MyUtil;->TranslateChar(Ljava/lang/String;Landroid/content/Context;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
move-result-object v0
iget-object v1, p0, Lstar/goodhope/utils/UpdateUtil;->context:Landroid/content/Context;
const-string v2, "更新"
.line 183
invoke-static {v2, v1}, Lstar/goodhope/utils/MyUtil;->TranslateChar(Ljava/lang/String;Landroid/content/Context;)Ljava/lang/String;
move-result-object v1
new-instance v2, Lstar/goodhope/utils/UpdateUtil$3;
invoke-direct {v2, p0}, Lstar/goodhope/utils/UpdateUtil$3;-><init>(Lstar/goodhope/utils/UpdateUtil;)V
invoke-virtual {v0, v1, v2}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
move-result-object v0
iget-object v1, p0, Lstar/goodhope/utils/UpdateUtil;->context:Landroid/content/Context;
const-string v2, "取消"
.line 188
invoke-static {v2, v1}, Lstar/goodhope/utils/MyUtil;->TranslateChar(Ljava/lang/String;Landroid/content/Context;)Ljava/lang/String;
move-result-object v1
const/4 v2, 0x0
invoke-virtual {v0, v1, v2}, Landroid/app/AlertDialog$Builder;->setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
move-result-object v0
new-instance v1, Lstar/goodhope/utils/UpdateUtil$2;
invoke-direct {v1, p0}, Lstar/goodhope/utils/UpdateUtil$2;-><init>(Lstar/goodhope/utils/UpdateUtil;)V
const-string v2, "忽略"
invoke-virtual {v0, v2, v1}, Landroid/app/AlertDialog$Builder;->setNeutralButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
move-result-object v0
.line 193
invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
move-result-object v0
.line 194
invoke-virtual {v0}, Landroid/app/AlertDialog;->show()V
return-void
.end method
从这段代码中,我们看到了几个关键词,和进入软件时候提示更新的一模一样,所以这里就是我们要找的。在这里,提供两种方案来更改。更新提示是要通过->show()来实现的,那么第一种方案就是在 invoke-virtual {v0}, Landroid/app/AlertDialog;->show()V这段代码前加上# invoke-virtual {v0}, Landroid/app/AlertDialog;->show()V,这样把它注释掉就可以了,如下图所示
方案二,在showHint这个方法名开头就进行return-void进行返回,这样代码就不会往下运行了,同样的实现了去除更新提示的效果,如下图所示
然后就一路保存,签名安装就可以啦
教程到此结束,由于是小白教程,所以内容有点多,请各大佬多指教,我也是刚接触逆向20多天的小白,很多都不懂,以后还要麻烦各位大佬多指导指导
帖子编辑不易,如果对您有用,请动动您的手一键三连,您的支持就是对我最大的鼓励
最后放一张修改后的图
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
-
查看全部评分
总评分:好评 +2
金币 +10
|