smali逆向实战破解酷我音乐vip
0x01 工具准备
AndroidKiller_v1.3.1
酷我音乐车机版5.0.0.0原版.apk
Notepad++
0x02 实现思路总结
1)找线索。包括字符串、事件、判断..
2)定位到关键的地方;
3)对于修改来说,非常常见的修改方式是赋值、改跳,需要进行函数调用、还有一些自定义添加逻辑代码;
0x03 反编译破解
1、寻找需要破解的地方
1)在模拟器安装好需要被破解的酷我音乐,寻找需要破解的地方
2)在AndroidKiller里没有搜索到关键字符串(关键词未写到smali代码中,那么字符串就可能在res/values/strings.xml中)
2、寻找逻辑代码(方法一)
使用Notepad++进行全局搜索,直至跟到smali逻辑代码中,在Notepad++中-->搜索-->在文件中查找-->设置好搜索目标以及搜索目录
继续搜索name值dialog_content_tips_use_car_effect
继续搜索id值0x7f08001d,成功找到逻辑代码
3、寻找逻辑代码(方法二)
1)在AndroidKiller的工程管理器中定位到res/values/strings.xml,搜索关键词:开通车载VIP
2)在public.xml中去搜索dialog_content_tips_use_car_effect获取索引id。
3)在./AndroidKiller_v1.3.1/projects/酷我音乐车机版5.0.0.0原版/Project/smali目录中用Notepad++搜索id值0x7f08001d
成功定位到smali逻辑代码
4、分析开发者逻辑
逻辑推理:
从开发者的角度,会有一个专门用来识别用户是不是VIP的通用的地方A
1)换皮肤的时候,调用A来判断是不是会员;
2)设置音效的时候,调用A来判断是不是会员;
3)当时听付费歌曲的时候,调用A来判断是不是会员;
所以,只需要修改掉A就ok。
5、分析smali代码破解vip
1)在notepad++中的逻辑代码里随便找个字符串,用AndroidKiller字符串搜索定位到逻辑代码,然后通过索引id所在的行数定位到逻辑代码块
2)分析此处的smali代码,只需很简单修改下if跳转代码,即可破解音效特权,但是此时我需要破解的是破解一个地方就能破解所有的vip特权(音效、皮肤、付费音乐等),即就是将用户的身份破解为vip
3)在:cond_0代码块中,(Z是ture或false的意思)猜测MusicChargeUtils就是判断是不是vip的函数
4)右击查看方法定位到代码,果然是vip判断的代码
5)确定此处的vip判断是全局的(即音效、皮肤、付费音乐都是调用此代码)在return之前,使v0始终等于1(const v0, 0x1),然后右键查看方引用有哪些调用了此方法了,发现有很多都引用了,于是此方法可能就是全局的vip判断
6)为了防止其他的调用有影响,直接把框中的代码删了
6、回编译安装
将修改后的代码进行保存、回编译、安装