smali逆向实战破解酷我音乐vip

0x01 工具准备

AndroidKiller_v1.3.1

酷我音乐车机版5.0.0.0原版.apk

Notepad++

0x02 实现思路总结

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

2)定位到关键的地方;

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

0x03 反编译破解

1、寻找需要破解的地方

1)在模拟器安装好需要被破解的酷我音乐,寻找需要破解的地方

img

2)在AndroidKiller里没有搜索到关键字符串(关键词未写到smali代码中,那么字符串就可能在res/values/strings.xml中)img

2、寻找逻辑代码(方法一)

使用Notepad++进行全局搜索,直至跟到smali逻辑代码中,在Notepad++中-->搜索-->在文件中查找-->设置好搜索目标以及搜索目录

img

img

继续搜索name值dialog_content_tips_use_car_effect

img

继续搜索id值0x7f08001d,成功找到逻辑代码

img

3、寻找逻辑代码(方法二)

1)在AndroidKiller的工程管理器中定位到res/values/strings.xml,搜索关键词:开通车载VIP

img

2)在public.xml中去搜索dialog_content_tips_use_car_effect获取索引id。

img

3)在./AndroidKiller_v1.3.1/projects/酷我音乐车机版5.0.0.0原版/Project/smali目录中用Notepad++搜索id值0x7f08001d

img

成功定位到smali逻辑代码

img

4、分析开发者逻辑

逻辑推理:

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

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

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

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

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

5、分析smali代码破解vip

1)在notepad++中的逻辑代码里随便找个字符串,用AndroidKiller字符串搜索定位到逻辑代码,然后通过索引id所在的行数定位到逻辑代码块

img

2)分析此处的smali代码,只需很简单修改下if跳转代码,即可破解音效特权,但是此时我需要破解的是破解一个地方就能破解所有的vip特权(音效、皮肤、付费音乐等),即就是将用户的身份破解为vip

img

3)在:cond_0代码块中,(Z是ture或false的意思)猜测MusicChargeUtils就是判断是不是vip的函数

img

4)右击查看方法定位到代码,果然是vip判断的代码

img

5)确定此处的vip判断是全局的(即音效、皮肤、付费音乐都是调用此代码)在return之前,使v0始终等于1(const v0, 0x1),然后右键查看方引用有哪些调用了此方法了,发现有很多都引用了,于是此方法可能就是全局的vip判断

img

6)为了防止其他的调用有影响,直接把框中的代码删了

img

6、回编译安装

将修改后的代码进行保存、回编译、安装

img

posted @ 2023-07-04 19:47  charonlight  阅读(3609)  评论(0编辑  收藏  举报