设为首页
收藏本站
切换到宽版
登录
立即注册
找回密码
搜索
搜索
本版
帖子
用户
快捷导航
论坛
BBS
VIP用户组
官网群
无名商城论坛
»
论坛
›
资源分享区
›
学习资源专区
›
【无邪考核】QQ音乐加密缓存文件解密算法分析 ...
返回列表
发帖
查看:
317
|
回复:
0
[技术教程]
【无邪考核】QQ音乐加密缓存文件解密算法分析
[复制链接]
无名
无名
当前离线
积分
32464
1万
主题
1万
帖子
3万
积分
管理员
积分
32464
发消息
发表于 2022-5-8 13:58:45
|
显示全部楼层
|
阅读模式
工具:IDA Pro
材料:QQ音乐最新版本安装包apk文件
本教程仅供研究学习,禁止用于非法用途. 如有侵权请通知作者.[呵呵]
写教程不易,转载注明出处...[汗]
首先,我们把QQ音乐安装包解压,然后把里面/lib/armeabi/libpay_encrypt.so拖到IDA Pro加载一下,一路下一步(确认),然后等待加载成功.
加载成功后,你会看到图1所显示的界面。然后,如图操作选择Exports,找到我们要分析的函数(为啥是这个?我分析好的,如果有想了解一下的同学请查看dex的VIPDownloadHelper类.这里不做介绍)
找到我们想要的方法后,双击进入,你会看到如图2的界面,这个是不是看着头皮发麻的感觉?(由于ARM指令集太麻烦,而且QQ音乐的so出来的伪代码还算完整,我们看伪代码)
按下F5,你在代码框框里会看到图3所示代码...观察后这里并没有解密操作,真正执行解密操作的是我用红圈圈起来的那个方法。
一路追下去,直到你看到图4所示代码。这里就是解密了(估计英语好的同学已经拔刀了,这个函数不是加密吗?咋成解密了?逗我?[怒]是是是,你说是加密没错[鄙视],可我说是解密也完全没毛病.是不是这样呢?看代码分析就知道了)
代码分析:
如果 偏移量(也就是第一个参数)=0 就遍历第二个参数(待解密的文件内容的byte[]数组),并进行与mapL方法,传入 i(byte中的数据下标)+第三个参数(也就是待解密数据byte数组的长度) 得到的返回值 进行异或运算(这也就是我说解密=加密的原因了[吐舌])把值在赋值到byte数组中的对应位置
现在我们唯一的问题就是mapL方法做了什么?废话不多说追下去就知道了!一路追下去,你会看到图5所示代码
代码分析:
如果 传入的参数0x8000(注意16进制) 直接调用sub_8b5c方法传入 iL(本方法的参数)%0x7fff 得到返回值,然后返回
否则 直接调用sub_8b5c方法传入iL 得到返回值,然后返回
紧接着我们,跳到sub_8b5c方法看看他做了什么?(如图5)我们看到这里只有一个获取数组的第 (参数*参数+80923)%256 个数据 返回
那么问题又来了,数组的内容呢?咋没有?莫非是null?当然不是,会崩溃的!双击 数组名称 你可以看到图6所示代码,把每一行的DBC 后面的东西全都复制下来(共256个)就是数组的内容了
分析结束...[呼~]
本文写的仓促,如果有不严谨的地方或者错误欢迎各位大佬指正.
解密
,
数组
,
代码
,
方法
,
看到
相关帖子
•
【FUT】无限弹窗代码
•
【FUT】IAPP判断手机系统
•
【FUT】IAPP横条天气
•
【解忧】深入理解Java反射
•
【FUT】IAPP图片无限旋转
•
【FUT】iapp计算人品代码
•
【解忧】最全的JAVA知识汇总(附讲解和思维导图)
•
【LUR】各种网页挂马方式原理
•
【DMT】<web安全系列>代码审计,SQL漏洞发现
•
【phoe】邮件群发软件协议,发送速度快,不限制任何内容和行业,显示效果好
回复
使用道具
举报
返回列表
发帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表