|
|
发表于
2025-11-26 23:30:47
来自手机
|
显示全部楼层
| 阅读模式
来自 贵州
本帖最后由 不熬夜的听冬酱 于 2025-11-26 23:39 编辑
各位宝子晚上好!
前言
看到论坛上的blurrr软件解锁永久会员的方式是替换资源调用的障眼法。
虽然显示永久会员,但实际上还是月会员。
那我大好人听冬来啦!
教程开始
申明:不重要和简单的地方我会一笔带过,照着做就行了
去除环境检测
参考帖子:https://bbs.binmt.cc/thread-152183-1-1.html
去除签名校验
在我之前的帖子里面是修改so,但是对于小白来说并不方便,所以这里非常温馨的提供修改Dex的方法。
找到加载ns.so的地方(完全匹配ns字符串搜就行了),然后他只有一个执行方法。

ns返回布尔值,为1就通过,为0就异常
这里有两种解决方法,任选其一即可
第一种:删掉native后清空代码返回1

第二种:查找调用后返回1。

原理分析
直接看JVAV说事,他的d变量字段是来自于调用NSClass.ns方法的返回值。
- this.d = new NSClass().ns(this);
复制代码

赋值后的jvav:让d字段为true。

解锁基础会员过滤关于会员的资源ID

到了后看图理解
可以直接去h方法,然后在方法里面下方,不过这里分析思路所以不跳转。

二战转折点:跳转DEFAULT字段
思路解析:如果你是会员就要判断你是不是普通用户,而DEFAULT表示的就是默认状态,所以这里再查找DEFAULT字段调用。

经过查找过滤后来到这个j方法,直接返回1没有什么好说的。

转java后就是:
- public final class d {
- public static boolean j() {
- g7.d f = f();
- if (f.a != VipStatus.DEFAULT && b.i(f)) {
- return true;
- }
- return false;
- }
- }
复制代码
成立条件:不是默认用户且b.i为true
当然也可以去给i方法返回true也可以哦
这里不多说,赋值后就是月会员了。
解锁云空间
解锁会员后还有异常显示:

直接搜:

来到方法后转Jvav

这个方法是设置文字状态的
然后下面的部分设置可见,然后判断应该显示对应的字符串。
上面判断了dVar.a方法,如果a为true就直接隐藏了,隐藏代码(可收藏学习):
已经很明确了,跳转a方法赋值1就行了
解锁永久会员
虽然说替换调用比较简单,但是总有人喜欢标准的改法对吧
心不急手不抖,全程跟着感觉走
返回刚才DEFAULT字段的类。
聪明的小朋友已经发现了这些字段蕴藏玄机

我们找到FOREVER字段,翻译是永久。
就像你和她一样...
回到正题,我们肯定要找什么地方用到了这个字段,然后让他成立对吧,查找调用。

依旧有很多个,其中可以忽略<clinit>方法里的调用,还有类:- ai.blurrr.video.user.model.VipStatus
复制代码
里面的调用,因为这个就是构建这些会员状态的类,里面没有直接应用。
然后就只有一个类:
进去后依旧转java

天呐,怎么这么多,一页都装不下!
所以我们直接退出,删除软件
小问题,我们先去看看最后返回了什么。
(不要误会这可不是void方法)

他new了一个数据对象d,来存储这四个字段
如下表格
| vipStatus | 会员状态 | | date | 会员到期时间 | | vipGrade | 会员等级(VIP/SVIP) | | vipStage | 会员阶段(时期) |
分析完后我们是不是就知道了中间的一大长串都是在各种判断然后给d返回字段,最后返回d。
那么好…
我们直接返回我们想要的字段是不是就行了呢?
按顺序来:
vipStatus:FOREVER
对应的smali代码:
- sget-object v1, Lai/blurrr/video/user/model/VipStatus;->FOREVER:Lai/blurrr/video/user/model/VipStatus;
复制代码
date:2099-12-31
(注:不要超过Long.MAX_VALUE)
对应的smali代码:
- new-instance v3, Ljava/util/Date;
- const/16 v4, 0x3e8
复制代码
vipGrade:SVIP
对应的smali代码:
- sget-object v4, Lai/blurrr/video/user/model/VipGrade;->SVIP:Lai/blurrr/video/user/model/VipGrade;
复制代码
vipStage:有效期间(翻译常量)
对应smali代码:
- sget-object p0, Lai/blurrr/video/user/model/VipStage;->VALID_PERIOD:Lai/blurrr/video/user/model/VipStage;
复制代码
四个参数我们都找好了,是不是还差d啊
对应的smali代码:
- new-instance v0, Lg7/d;
- invoke-direct {v0, v1, v3, v4, p0}, Lg7/d;-><init>(Lai/blurrr/video/user/model/VipStatus;Ljava/util/Date;Lai/blurrr/video/user/model/VipGrade;Lai/blurrr/video/user/model/VipStage;)V
复制代码
什么?!这些smali代码哪来的? 本方法里面就有,不要让我看到这个问题
现在一切都就绪了,我们直接清空代码
是的,你没听错!
直接重写方法回填返回代码
参考:

- sget-object v1, Lai/blurrr/video/user/model/VipStatus;->FOREVER:Lai/blurrr/video/user/model/VipStatus;
- new-instance v3, Ljava/util/Date;
- const-wide v4, 0x3b69f2f2c00L #这里是你喜欢的时间戳
- invoke-direct {v3, v4, v5}, Ljava/util/Date;-><init>(J)V
- sget-object v4, Lai/blurrr/video/user/model/VipGrade;->SVIP:Lai/blurrr/video/user/model/VipGrade;
- sget-object p0, Lai/blurrr/video/user/model/VipStage;->VALID_PERIOD:Lai/blurrr/video/user/model/VipStage;
- new-instance v0, Lg7/d;
- invoke-direct {v0, v1, v3, v4, p0}, Lg7/d;-><init>(Lai/blurrr/video/user/model/VipStatus;Ljava/util/Date;Lai/blurrr/video/user/model/VipGrade;Lai/blurrr/video/user/model/VipStage;)V
复制代码
再转jvav看一下

直接返回了我们想要的效果。
效果展示
1.png

2.png

至此,教程结束,写作不易,可以留下你的小心心嘛
本人帖子只教思路,不发成品和练习样本,有心者会自己挖掘,教程仅供学习参考,请勿违法使用
就酱紫哦,晚安各位 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
-
查看全部评分
总评分:好评 +3
金币 +4
|