Rytter 发表于 2023-9-3 22:26

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

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

## 写在前面

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

## 修改判断绕过vip

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

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

### 1、任务目标

!(https://cdn.jsdelivr.net/gh/RytterMohn/img/20230903215211.png)

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

### 2、代码分析

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

!(https://cdn.jsdelivr.net/gh/RytterMohn/img/20230903215444.png)

这时候可以直接使用smali2java这个插件查看反编译的java代码,但是缺点就是没法直接改java代码然后逆向回去,这里点名表扬一下dnspy这个软件,这是个专门对.NET进行逆向的一个软件,这个软件就可以直接修改代码后重新编译回去

然后查看代码结构我们发现他就是通过isvip这个函数判断是不是大会员,这里其实有两个方法,一种是改变判断条件,一种是改变返回值,这个只需要简单学一下smali代码的语法就可以了,我选择的是第二种,这种更加简单

我们通过查看代码发现isvip是只会返回一个false,我们就把它换成true就可以了

然后我们很快就发现这个代码了

```java
.method public final isvip()Z
    .locals 1

    const/4 v0, 0x0

    return v0
.end method
```

### 3、代码修改

然后我们将这个代码修改为这样

```java
.method public final isvip()Z
    .locals 1

    const/4 v0, 0x1

    return v0
.end method
```

把0x0换成0x1,就相当于永远返回true了

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

### 4、结果

!(https://cdn.jsdelivr.net/gh/RytterMohn/img/20230903222258.png)

小木曾雪菜 发表于 2023-9-4 14:31

这是什么活动的作业呀?

word11 发表于 2023-9-4 14:36

谢谢你让我觉得很简单{:301_988:}

业余小徐 发表于 2023-9-4 15:08

原来是正己大大的教程的,哈哈哈,支持支持:victory:

Rytter 发表于 2023-9-4 16:22

小木曾雪菜 发表于 2023-9-4 14:31
这是什么活动的作业呀?

你好,是吾爱android逆向课程的作业,正己大大的教程

NMCchan 发表于 2023-9-5 12:19

最近也了解了一点汇编

丨丨丨丨 发表于 2023-9-5 13:33

感谢分享

jwzyjwzy 发表于 2023-9-5 13:38

用的什么插件

DYTRemix 发表于 2023-9-5 13:51

厉害啊, 楼主用的什么发行版? 看着像GNOME桌面

Rytter 发表于 2023-9-5 13:56

DYTRemix 发表于 2023-9-5 13:51
厉害啊, 楼主用的什么发行版? 看着像GNOME桌面

你好,我使用的是ubuntu 22.04,相比之下ubuntu用的人最多,有问题的话查解决方法也很方便{:301_975:}
页: [1] 2
查看完整版本: Android逆向学习(三)vscode修改smali绕过vip