安卓逆向011之实战获取VIP(影视软件与起名软件)

实战影视软件

VIP获取的关键点是直接搜索关键字如“VIP”,

过程

使用jadx打开软件,

在这里插入图片描述

但是直接搜索VIP的话,结果特别多。

在这里插入图片描述


这个时候可以换个关键词搜索试试,如“isvip”、”getvip”。

如这里,搜索“ Getvip ”,结果就少了一部分。

在这里插入图片描述


这个“ UserVip ”又是一个关键点了,点进去跟进一下,

在这里插入图片描述


右击鼠标右键,选择“ 跳到声明 ”,

在这里插入图片描述
分析程序逻辑


看到这里我们就有了思路,因为所有用到VIP的地方,都会调用此类来看看此用户是否为VIP,

只要我们保证把“UserVip”的返回值改为“此用户是VIP”即可。

这样的话,任何地方调用“UserVip”,都返回“ 是VIP ”也就达到了我们的目的。

明确目标


此时目标就很明确了,我们要让“UserVip”的返回值都是“ 此用户是VIP ”。

这里有一个小技巧要讲明白,很多软件APP都是默认是普通用户,

然后用条件进行判断是不是VIP,我们可以从本质出发,直接将默认改为“是VIP”。

使用AK打开APK,找到对应的类,

在这里插入图片描述


在AK中注意的是,这个APK的方法比较多,超过了65535个,我们需要在第二个“smali”中找到。

在这里插入图片描述


函数“UserVip”里面最关键的方法就是“getisVIP”。

在这里插入图片描述


分析函数,

这里原本是没有31行的,31行是我后来修改添加的。

	先看看代码,

30行,通过判断将判断结果P0赋值给V0,
	
	这里原本是,假设判断你为VIP,则P0=1,赋值给V0。

	但是假设,你不是VIP,则P0=0,赋值给V0,

32行,将判断结果返回。

到这里,大家就明白我们如何获取VIP了,直接在31行再次定义V0=1,

即通过修改初始值,达到完成获取VIP的目的。


在这里插入图片描述

实战起名软件

小试牛刀


正常使用,当选择五行的话,会弹出需要VIP的字眼。

在这里插入图片描述


根据提示,找到代码所在地。

在这里插入图片描述


直接看到另一个关键词“GetVip”。

在这里插入图片描述


此时突破点的逻辑就比较的清晰了,我们通过调整75行代码的执行逻辑,

使得程序直接执行76~93行的代码,而不要进入95行的代码即可。


打开AK,搜索关键词语句。	//别忘了转码后在搜索。

在这里插入图片描述


找到了两处,先点击到第一处的代码。

在这里插入图片描述


稍微向上翻看,找到一个关键词代码“ setChecked(Z)v ”。

这里的“Z”就是false的意思。

在这里插入图片描述


这个就与上边的96行代码对应了,

在这上边133行,有一个“ :cond_0 ”的关键词字眼。

思路清晰了,这就是判断失败而跳转到这,然后赋值“false”结束程序。

此时就去找是哪里判断,而跳转到“ :cond_0 ”的地方即可。

在这里插入图片描述


65行,将GetVip函数的返回值赋值给V1。

在69行,假设V1=0,则跳转到“ :cond_0 ”,

在这里插入图片描述


此时修改也极为简单,直接将“ if-eqz ”改为“ if-nez ”即可,

在这里插入图片描述


此时,我们仅仅修改了上述的第一处,还有第二处。

在这里插入图片描述


和第一处一样的思路,点击跳转过去,向上找“ :cond_0 ”,

之后修改“ if-eqz ”为“ if-nez ”。

在这里插入图片描述


两个都修改完毕后,先保存后,回编译看看,

额,失败。

在这里插入图片描述

峰回路转,老套路


按照上面获取某影视软件VIP的思路,修改GetVip()函数的返回值为1。

在这里插入图片描述


搜索,结果有点多。

在这里插入图片描述


点开,看看具体的内容,找到定义此函数的地方如下图的第一个红框。

第二个红框这种是调用的地方,用处不大。

在这里插入图片描述


通读逻辑,上边先定义了V0=094行,判断V1是否为0,为了返回V0,即0。

所以直接注释掉94行,让程序直接向下运行即可。

在这里插入图片描述


再次保存,回编译。

运行成功,完结撒花。

猜你喜欢

转载自blog.csdn.net/weixin_43970718/article/details/119920952