Android逆向学习(三)vscode修改smali绕过vip
写在前面
这是吾爱的第二个作业,主要就是要修改smali代码,其实smali代码我感觉没有必要去学,当然主要是我本来就会汇编语言,基本上汇编语言都是一样的,我是了解过mips,x86,jimple的,不管是mips还是smali还是x86的或者jimple,主要就是最寄存器的一些操作,格式也都差不多,简单学一下就可以上手
修改判断绕过vip
还是老样子,我们直接逆向后找到第二个挑战
事实上这个挑战我感觉更加简单,所以大概率这篇博客看起来像是一个水文
1、任务目标
这一个挑战的目标就是实现投币的一键三连,但是三连的话需要有一个大会员判断,我们这一次的任务就是绕过这个大会员
2、代码分析
我们直接使用之前的代码逆向软件,逆向后找到这个activity。然后看看这个代码的逻辑是怎么样子的
这时候可以直接使用smali2java这个插件查看反编译的java代码,但是缺点就是没法直接改java代码然后逆向回去,这里点名表扬一下dnspy这个软件,这是个专门对.NET进行逆向的一个软件,这个软件就可以直接修改代码后重新编译回去
然后查看代码结构我们发现他就是通过isvip这个函数判断是不是大会员,这里其实有两个方法,一种是改变判断条件,一种是改变返回值,这个只需要简单学一下smali代码的语法就可以了,我选择的是第二种,这种更加简单
我们通过查看代码发现isvip是只会返回一个false,我们就把它换成true就可以了
然后我们很快就发现这个代码了
.method public final isvip()Z
.locals 1
const/4 v0, 0x0
return v0
.end method
3、代码修改
然后我们将这个代码修改为这样
.method public final isvip()Z
.locals 1
const/4 v0, 0x1
return v0
.end method
把0x0换成0x1,就相当于永远返回true了
然后我们重新打包一下,然后签名安装