好友
阅读权限10
听众
最后登录1970-1-1
|
前言:
(本教程为实战教程,没有成品,拒绝白嫖)
这几天无聊,随便拿个软件试试水.
以后教程会分为两大部分 .
一部分为直接模式
一部分为分析模式
增强教程的实用性,兼容性!{:301_997:}
工具:
mt管理器足以!(但是需要会员,没有可以用np管理器代替!但是np兼容性不好容易闪退!)
kk键盘(可以去任意地方下载,目前任意版本都可以!)
软件介绍:
大小:61m
类别:输入法
版本:2.1.9.9.451(更新于2月28日)
好玩有趣的个性输入法!
直接模式:
1.使用mt管理器去除签名校验(不管有不有用,但这是个好习惯!{:301_976:});(这个软件貌似没有签名验证)
2.选择dex全选打开.
3.直接搜索方法名:getusertype (结果只有一个)点进去.
4.源代码为:
.method public final getUserType()I
.registers 2
.line 1
iget v0, p0, Lim/weshine/repository/def/login/VipInfo;->userType:I
return v0
.end method
将他改为这样:
.method public final getUserType()I
.registers 2
.line 1
iget v0, p0, Lim/weshine/repository/def/login/VipInfo;->userType:I
const v0, 0x5
return v0
.end method
就这样.
5.退出保存. 软件打开用手机号登入已经是会员了(提个醒:虚拟机登入不了)
直接模式结束!{:301_1000:}
分析模式开启!
1.
这个软件并没有加固!{:301_975:}
2.首先的思路应该直接搜索关键词"会员"看看有不有相关的代码
结果很感人,一个相关的都没有
那么我们
思考一下,这些字符串去哪了?
这里可以讲一下
在软件的构建中,是可以引用的
因为在Java中,所有的字符串都会在一个特定的内存中,叫字符串常量池.
而这个软件没有加固,又没有找到,那一定是引用了
2.所以大胆的去resources.arsc这个文件夹里面找.(搜索字符串)
结局很感人!
3.这里有很多会员相关的字符串
那么我们怎么选?
这里并不是乱选一通
我们要讲究点!(选择拥有会员的功能,或者需要会员功能的提示)
我选择的 最后一个 "会员已到期....."
长按点击复制id
4.打开dex 直接代码搜索
出现两个结果,
为什么会出现两个结果?
第一个就是引用的文字资源
第二个就是使用文字资源
答案明显
选这第二个
点进去看:
一片代码迷人眼,
所以这里要是用mt的付费功能转Java
找到我们刚刚复制的id:7f110777
这个方法的名字是setVIPstatuts 翻译过来就是设置会员状态
而且没有返回值,说明这个是执行的最终方法,直接影响软件的界面展示
我们来分析一下
这里也就是看传入的这个参数
那就要找出是谁给他的参数!
在导航处找到这个方法名长按这个方法名
查找调用
只有一个方法调用,直接点进去
这是个Q方法
这里调用了setVIPstatus
而且这里传入了一个D()方法
那么我们现在就要找到这个D()方法了
我们离真相越来越近了!
长按D() 点击跳转
我们就到了D()方法中
我们可以发现,最终返回的是getusertype();这个方法
那我们继续看看这个getusertype有哪些调用了的
在这个方法中,我们发现了这里有很多判断,其中有getusertype等不等于
5
还有判断getvipespiredtime的 这个代码是判断会员是不是过期的
方法
而且如果会员时间过期这个方法会返回false
而getusertype与这个会员时间的判断是一起的
所以我可以断定
getusertype等于5就是会员
等于1就是没有会员
等于10就是会员过期
所以把getusertype的返回值改掉就行了!
分析模式结束!
有图有真相:
会员已成功,可以使用所有会员功能呢!
教程不易,给个好评,给句鼓励都行!{:301_1003:}
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|