练手包&成品会员版下载地址:
https://pan.quark.cn/s/7b5f67e821aa
非常适合小白去练习的一款软件,教程开始:
1.使用MT管理器去除签名效验。
2.打开Asrc编辑器,搜索永久VIP会员,找到这个,长按复制该id。

3.接着进入dex编辑器,全选,选择搜索,搜索类型选择代码,查找代码选择刚才那个复制的id,接着点击确定。


4.可以看到搜出来这些都是没用的。

那怎么办呢?别急,我们先随便点一个进去
复制它前面的代码,如图所示也就是那个c145。

复制之后还是一样选择搜索,代码.选择刚才复制的代码也就是c145,然后点确定。

然后我们就会发现一个与其它代码不一样的一个代码。

我们点击第一个进入。

接下来就是重头戏了!
5.那小白说看不懂怎么办?那就转Java,Java更容易看懂,我们点击右上角的三条杠,选择转java即可。
如果转进去只有一点点代码那就是出现bug了,重新进入即可。
转Java之后我们发现它是进行逻辑判断来看我们有没有会员。
如图分别是getVipNums方法名来判断时间[3650转16进制也就是0xe42]。
getPayStatus和isPermanent方法名来判断会员状态。

那我们就返回修改代码
6.我们返回之后,稍微往上滑就一下子就看到了那几个方法名首先是getVipNums这个是判断时间的,我们往它下面看就可以看到判断代码。

那小白又要问了,看不懂怎么办?
我们点一下那条代码,点上方的三条杠,选择指令查询。
可以看到是判断v1是否大于或等于v4的值。

我们往上翻一点就能看到v4的值,0xe42转换为十进制是3650,这正是Java里的那个3650。如果判断成功就会成为永久会员,所以我们只需让它等于这个值就行。
具体操作是找到getVipNums这个值并跳转进去,在后面赋值const/16 v0, 0xe42。这里用const/16而不是const/4,是因为const/4支持的数值范围较小,而3650超出了它的范围,所以必须使用const/16。
接下来找到isPermanent和getPayStatus这两个方法名(刚才在Java的判断逻辑里已经见过,它们也是用于判断会员状态的),分别跳转进去后赋值const/4 v0, 0x1。选择赋值1而非其他数字,是因为在smali中通常用1表示true(真)、0表示false(假),而且更重要的是,刚才Java代码里就是通过判断是否为1来确定是否为永久会员的——值为1就是永久会员,不为1则不是。
如果遇到下载后无法登录的情况,我们可以在dex中搜索islogin方法名,找到后点进去,赋值const/4 v0, 0x1即可(同样遵循1表示已登录、0表示未登录的逻辑)。
完成上述操作后,保存并安装就能生效了。
