Android逆向学习(三)vscode修改smali绕过vip

Android逆向学习(三)vscode修改smali绕过vip

写在前面

这是吾爱的第二个作业,主要就是要修改smali代码,其实smali代码我感觉没有必要去学,当然主要是我本来就会汇编语言,基本上汇编语言都是一样的,我是了解过mips,x86,jimple的,不管是mips还是smali还是x86的或者jimple,主要就是最寄存器的一些操作,格式也都差不多,简单学一下就可以上手

修改判断绕过vip

还是老样子,我们直接逆向后找到第二个挑战

事实上这个挑战我感觉更加简单,所以大概率这篇博客看起来像是一个水文

1、任务目标

Android逆向学习(三)vscode修改smali绕过vip_第1张图片

这一个挑战的目标就是实现投币的一键三连,但是三连的话需要有一个大会员判断,我们这一次的任务就是绕过这个大会员

2、代码分析

我们直接使用之前的代码逆向软件,逆向后找到这个activity。然后看看这个代码的逻辑是怎么样子的

Android逆向学习(三)vscode修改smali绕过vip_第2张图片

这时候可以直接使用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了

然后我们重新打包一下,然后签名安装

4、结果

Android逆向学习(三)vscode修改smali绕过vip_第3张图片

你可能感兴趣的:(Android,逆向,学习,android,vscode)