新版QQ音乐逆向 (sign 请求负载加密 响应解密)
本文介绍了新版QQ音乐接口逆向分析过程,重点解析了sign签名、请求负载加密和响应解密机制。通过断点调试定位到加密函数L()和P(),发现这些函数由VMP保护的自执行函数定义。文章详细展示了如何扣取关键代码、补全缺失环境(如userAgent、crypto模块等),最终成功生成sign签名和请求负载,并对base64加密的响应数据进行解密还原。整个逆向过程完整呈现了QQ音乐接口的加密流程,为JS逆
JS逆向 - 新版 QQ音乐逆向(sign、请求负载、响应解密)
文章目录
- 概要
- 分析加密流程
- 扣代码补环境
概要
提示:仅供学习,不得用于商业,如有侵权请联系作者。
逆向 : JS逆向 - 新版QQ音乐(sign、请求负载、响应解密)
URL:aHR0cHM6Ly95LnFxLmNvbS9uL3J5cXEvc29uZ0RldGFpbC8wMDNETTlWQjRnVzBjRg==
接口 :
aHR0cHM6Ly91Ni55LnFxLmNvbS9jZ2ktYmluL211c2ljcy5mY2c=
分析加密流程
1.分析sign 和请求负载加密 在哪里生成
在响应最后断点
跟进L函数进入发现是一个VMP 所以我们需要找到L在外部如何进行定义
在外部找到定义的位置发现 每个定义前都是有一个自执行函数, 并且调用的
L()
P()
都是由一个定义window的对象下调用加密函数, 所以我们需要把这两个自执行函数 拿到js文件里面 进行调用加密
可以看到当前接口类型是
octet-stream
这里判断如果是octet-stream
就调用N()
进行解密获得原始数据的字符串,而且N()
是由前两个函数块定义得来所以我们只要解决前文的两个函数即可
扣代码补环境
把定义和自执行函数扣下来
定义空对象 挂上代理
调用函数进行加密 发现 userAgent host没有补上
补上缺失的值 发现sign值已经生成
L(data).then(data=>{console.log(data);
})
在调用这个负载加密这个函数的时候发现 crypto 缺失
const crypto = require('crypto')
window.crypto = crypto
补上后发现 负载加密已经正常出值
接下来处理响应 对他进行解密
首先对请求后的响应进行Base64加密
然后对传过来的Base64 解密 之后转成ArrayBuffer 调用解密函数
最后正常获取到数据

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐
所有评论(0)