首页 > 其他分享 >【JS逆向】某Q音乐VMP纯算

【JS逆向】某Q音乐VMP纯算

时间:2024-11-19 19:17:58浏览次数:3  
标签:逆向 JS 参数 密文 纯算 生成 插桩 VMP

声明

本文章所有内容仅供学习交流使用,不用于其他任何目的,其中的抓包内容、数据接口、敏感网址等均已做脱敏处理,严禁用于商业用途和非法用途,否则,由此产生的一切后果均与作者无关,若有侵权,请联系作者立即删除!

逆向目标

  • 网址:aHR0cHM6Ly95LnFxLmNvbS8=
  • 目标:歌曲列表查询参数sign

抓包分析

直接在搜索框中搜索某个歌手,会发送一个请求,其中查询参数sign就是我们要逆向的参数。

在这里插入图片描述

逆向分析

首先要找到参数生成的位置,我一般的做法是,能搜索就搜索,能hook就hook,实在不行再跟栈。

那就直接全局搜索sign,在某个文件中有三个可疑的地方,把断点都打上,重新发请求(一定要确保请求发出去,不然你会以为不是在这几个断点中生成的),成功断住。

在这里插入图片描述

我们要知道的就是i的生成逻辑,调用o函数,传入了请求体。

直接开搞,跟进去,一进去就是一个大的for循环,经常搞VMP的朋友知道,这大概率就是一个VMP了。

在这里插入图片描述

搞VMP的一般做法:

  • 将代码拿下来,补足里面缺失的环境,生成关键参数
  • 直接插桩,通过插桩日志分析参数生成的流程

因为我不会补环境,所以直接插桩分析,我的经验是,假如密文不变的话,那明文能固定就固定(如果存在随机情况如Math.random,时间戳等,可以都hook住),这样分析同一套日志会比较清晰。

既然如此,那我们可以尝试把脚本拿出来单独执行,回到上一层堆栈,发现o的值是n(350).default),经常玩webpack的朋友都知道,n大概率就是webpack的加载器,至于webpack怎么逆向,可以自行学习,或者以后有机会再写相关文章。

在这里插入图片描述

我们先把请求参数复制下来,便于验证拿下来的代码是不是正确的,记住,密文是这样的。

在这里插入图片描述

遇见webpack,关键是要把加载器找到,补齐缺失的模块,然后导出里面相关的函数,这个案例中,可以在控制台输出n,直接进去函数就是加载器了。

本文的重点是VMP,webpack相关的逆向技巧就不过多阐述了。

直接在浏览器自定义一个脚本,将相关代码放在里面,导出加密函数,传入之前的明文,生成密文,经过比对,密文是一样的,说明代码没有问题。

在这里插入图片描述

那就可以开始插桩了,小板凳准备好,出发!

这种情况下,我会先把明文固定为’1’(个人习惯,毕竟日志多了,不利于分析,有不合理的地方请大佬指出),密文是这样的zzc84225b7be2qvanbirdlydjus20y7b1urg553b7d79

在这里插入图片描述

然后我们就可以下日志断点了,因为脚本是自定义的,直接console.log就好,插桩的话,先从函数调用开始,具体代码可参考下图。

在这里插入图片描述

麻烦点就是v的变化,这个自己编写一下测试代码就知道是怎么回事了。

将所有函数调用逻辑都写好之后,直接输出一次日志,从生成结果开始往上分析。

在这里插入图片描述

在分析过程会发现有一个熟悉的密文,这不就是标准的sha1算法吗,不清楚原因的可以看【JS逆向】某志愿请求头参数逆向分析

在这里插入图片描述
最终结果其实是由四个部分拼接而成的。

zzc: 固定前缀
84225b7: 一个固定索引数组,在sha1密文字符串中取对应的索引进行拼接
be2qvanbirdlydjus20y7b1urg: 通过sha1密文字符串进行一些列运算生成,分析的关键部分
553b7d79: 一个固定索引数组,在sha1密文字符串中取对应的索引进行拼接

关键是第三部分,具体的分析过程就不贴了,读者可以自行解决(我的想法是,自己不搞一遍,技术就不会有提升,过程中需要耐心耐心再耐心)。

提示:在一些位运算中进行插桩,注意某些值可能是固定的,注意大小写。

生成逻辑确定之后,可以直接通过python模拟参数的生成(也就是所谓的纯算)。

模拟请求结果:

在这里插入图片描述

成功!!!

标签:逆向,JS,参数,密文,纯算,生成,插桩,VMP
From: https://blog.csdn.net/weixin_71462234/article/details/143830136

相关文章

  • json解析之fastjson和jackson使用对比
    json解析之fastjson和jackson使用对比前言最近项目中需要做埋点分析,首先就需要对埋点日志进行解析处理,刚好这时候体验对比了下fastjson和jackson两者使用的区别,以下分别是针对同一个json串处理,最终的效果都是将json数据解析出来,并统一展示。一、fastjson简介?fastjson是由......
  • Json使用 jackjson 工具类
    Json使用jackjson工具类importjava.io.IOException;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.LinkedHashMap;importjava.util.List;importjava.util.Map;importorg.codehaus.jackson.JsonEncoding;importorg.codehaus.jackson.Js......
  • JSP的内置对象及方法
    JSP中动态include和静态include的区别在JSP(JavaServerPages)中,include指令用于在当前JSP页面中包含另一个资源,如另一个JSP页面、HTML文件或静态文本。JSP提供了两种类型的include指令:动态include和静态include。它们之间有几个关键的区别:静态include(<%@includefile="..."%......
  • 基于node.js毕设汽车票网上预订系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着互联网技术的飞速发展,在线票务系统在交通领域的应用日益广泛。关于交通票务预订系统的研究,现有研究主要以火车票预订系统为主,专门针对汽车票网上预......
  • 基于node.js毕设汽车商城系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于汽车商城系统的研究,现有研究主要以汽车销售的某一环节为主,如单独的汽车销售管理系统或者单独的汽车信息展示平台等。专门针对集用户、汽车品牌、门......
  • 基于node.js毕设汽车售后服务管理系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于汽车售后服务管理系统的研究,现有研究多集中在汽车售后服务的个别环节或传统管理模式方面。例如,部分研究主要关注维修保养流程优化或者售后人员管理......
  • 视频流媒体播放器EasyPlayer.js网页直播/点播播放器为什么显卡支持,但仍无法使用硬解?
    EasyPlayer播放器属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式,也能支持WebSocket-FLV、HTTP-FLV、HLS(m3u8)、WebRTC、ws-fmp4、http-fmp4......
  • java中使用Jackson代替fastjson进行序列化处理
    方法详解这里会列出常用方法的详解,更多方法可查阅jacksonapi文档ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构对象转json字符串ObjectMapper通过writeValue系列方法将java对象序列化为json,并将json存储成不同的格式:String(writeVa......
  • H.265流媒体播放器EasyPlayer.js H5流媒体播放器如何验证视频播放是否走硬解
    随着技术的不断进步和5G网络的推广,中国流媒体播放器行业市场规模以及未来发展趋势都将持续保持稳定的增长,并将在未来几年迎来新的发展机遇。流媒体播放器将继续作为连接内容创作者和观众的重要桥梁,推动数字媒体产业的创新和发展。EasyPlayer.js无插件直播流媒体音视频播放器是一......
  • RTSP播放器EasyPlayer.js无插件直播流媒体音视频播放器如何在electron中播放视频
    随着科技的飞速发展,流媒体技术已经成为我们日常生活中不可或缺的一部分。从视频娱乐到在线教育,从远程办公到物联网应用,流媒体技术的广泛应用正深刻改变着我们的生活方式。EasyPlayerH.264/H.265播放器属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无......