【Android(安卓)安全逆向02】某音乐 | Android APP 破解

数码小果酱
熬夜修仙。法力无边。我命由我。不由天。

声明: 文章中的技术只做研究之用,禁止用来从事非法用途,如有使用文章中的技术从事非法活动,一切后果由使用者自负简单案例

首先先来个简单案例:

安装一个简单 demo 的 apk 文件到雷神模拟器:

打开:

输入用户名和密码登录

我们不知道账号和密码,但是想登录成功,该如何操作呢,我们可以对这个 apk 文件进行反编译。

使用 Jadx

先看一下这个 apk 的逻辑,使用 Jadx:

首先查看有哪些页面,在【资源文件】-【AndroidManifest.xml】-【】定义了页面:

可以看到只有一个页面,其中的【android:name】后面是类,可以去这个类中查看相关信息。

我们在登录的时候会看到【登录失败】,可以通过全局搜索:【导航】-【搜索文本】找到这个【登录失败】字段。

双击进入:

看到【name.equals】和【pass.equals】两个参数,知道这个就是我们要找的账号和密码。

就此,我们可以在很多 app 新发布的时候,多观察看看是否有这种的测试代码,如果有的话,就可以直接登录 app。

下面,我们使用 Android Killer 工具,修改 apk 文件,使我们输入任何账号密码都可以登录成功。

输入【登录失败】,搜索字符串:

双击进入:

聪明的小伙伴会想到:我们直接把【登录失败】四个字改为【登录成功】,就可以了。

改成功后直接编译:

编译成功后,安装:

安装成功后点击运行:

输入任意账号密码都可以提示登录成功。

另一种方法:

我们开始改【跳转】,首先找到登录失败的代码块:

再去上面把所有跳转到这个【cond_0】的跳转命令全部注释掉。

再编译:

编译成功后,安装运行,发现达到预计效果。

对某音乐 apk 进行破解

下面我们开始对酷我音乐 apk 进行破解,首先安装运行查看:

在音效选择中,发现收费内容:

我们不想付费开通,怎么办呢,下面我们一起操作一下。

首先进行使用【Android Killer】进行反编译,点击【是】:

搜索关键词【开通车载VIP】:

发现没有结果。

扩展

对Android在引用字符串的时候:

1.直接把字符串写在代码里面;

2.在代码里面通过字符串的索引id来引用res\values\strings.xml中的字符串。

查看某音乐的文件:

使用 notepad 全局搜索:

可以搜索到:

然后搜索【dialog_content_tips_use_car_effect】:

搜索结果:

总结

搜索的过程:

1

“开通车载VIP” -> res\values\strings.xml:dialog_content_tips_use_car_effect -> public.xml:0x7f08001d

定位到id之后,就可以直接在代码里面搜索了。

找到了逻辑代码,这是我们想要的结果,然后我们就在这文件中操作。

重点

1、 破解车载音效付费功能

问题:我们看不懂这些代码怎么办???

首先我们要知道我们是要干什么,我们是要破解,不是要开发,不需要读懂全部代码,只需要把付费功能取消或者绕过就行。

我们要先找【是或者否】判定用户身份是否为 VIP 的代码:

【if-nez v0, :cond_0】

我们的目的是:让【if-nez v0, :cond_0】跳转成功。

我们讲解一下这个命令是什么意思:

1

2

if 判断语句 nez :not equal zero (v0不为零就跳转到cond_0)

那我们直接给 v0 赋值,让 v0=3:

1

const v0, 0x3

这个就好了,因为我们搜索结果是两处,还有一次也是相同操作。

或者让它始终跳转到:cond_0

1

2

3

if-nez v0, :cond_0

改为:

goto :cond_0

这样两个地方我们就修改好了,我们在文件里修改和在【Android Killer】里修改是一样的。

然后编译:【要使用 apktool_2.4.1 编译】

然后开始安装:

安装成功后,点击音效测试,发现不再提示 VIP 付费弹窗:

2、破解车载皮肤特权付费功能

同上,搜索“专属汽车皮肤特权” strings.xml中看一下name:dialog_content_tips_use_pay_skin   id:0x7f08001e

快速确定代码文件:

向上找,同上方法:

然后保存,编译,安装:

皮肤更换成功:

完成。

逆向过程的总结

1.找线索。包括字符串、事件、判断..

2.定位到关键的地方;

3.对于修改来说,非常常见的修改方式是赋值、改跳,需要进行函数调用、还有一些自定义添加逻辑代码;

逻辑推理

从开发者的角度,会有一个专门用来识别用户是不是VIP的通用的地方A

1.换皮肤的时候,调用A来判断是不是会员;

2.设置音效的时候,调用A来判断是不是会员;

3.当时听付费歌曲的时候,调用A来判断是不是会员;

所以,只需要修改掉A就ok。

发表于:2024-11-29 16:45
6个回复
您还没有登录,登录后才可回复。 登录 注册