news 2026/5/14 22:44:51

JSVMP反编译之QQ音乐

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JSVMP反编译之QQ音乐

声明

本文仅供学习交流使用, 如侵立删!

目标网址

aHR0cHM6Ly95LnFxLmNvbS8=

JSVMP

JSVMP是一种JS代码虚拟化保护技术
原理是将JS源代码编译成自定义的字节码
这些字节码由操作码和操作数组成
并且这些字节码只能由特定的解释器执行

类比于解释型语言的实现与执行
比如
Java代码编译成Java字节码
由JVM执行
python代码编译成python字节码
由CPython执行
也就是说
JSVMP的本质是自定义字节码 + JS虚拟机的代码保护方案

目标代码

访问QQ音乐网址
使用关键字 P(r.data)
进行搜索
即可找到加密参数sign生成的代码位置

然后查看P函数代码
进入到了一个JSVMP中
这个JSVMP就是反编译的目标代码

JSVMP代码结构

浏览器中的JSVMP主要由两部分组成
加密自定义字节码

自定义虚拟机

JSVMP代码优化

在自定义虚拟机中
会对加密自定义字节码进行解密

并且在自定义虚拟机中
有两个相同的自定义解释器
第一个解释器

第二个解释器

针对自定义虚拟机的代码结构和运行流程
对其进行优化
方便后续反编译与调试

首先对加密自定义字节码进行解密
得到解密后的自定义字节码
然后删除与解密相关函数

最后对两个相同的自定义解释器
进行适当的修改
保留其中一个解释器

自定义虚拟机

自定义虚拟机主要分成三部分
执行环境(VMcontext)
对计算机执行环境的抽象模拟

在执行环境中
最重要的就是存储上下文环境信息的"容器"
根据这个"容器"结构
区分当前虚拟机是栈式虚拟机还是寄存器虚拟机

调度器(Dispatcher)
通过for循环和switch这种分发器结构实现的调度器
控制着程序正确的运行(取指和译码)

在调度器中
最关键的就是程序计数器PC
程序计数器控制着程序的执行流程

程序集(Handlers)
解释程序集由switch语句中的所有case块组成
每个case块对应一种自定义操作码的处理逻辑

反编译

根据程序集中不同case块所对应的处理逻辑
构建出相应的ast节点
从而生成js源代码的ast形式
最后将构建的ast转换成可读的js源代码
便完成了jsvmp的反编译

将JSVMP代码复制到Node环境中
引入Babel库
然后对虚拟机函数进行适当的修改
再创建一个数组变量
保存构建的ast节点
当虚拟机函数执行完后
将数组变量转换成program节点
最后将其转换成对应的js源码
写入到result_code.js文件中

自定义操作码节点构建

在JSVMP中
程序集一共有82个case块
根据执行流程
对执行case块进行相应的ast节点构建
因为case块比较多
这里只挑选其中几个进行讲解
case 2(函数声明)

case 46(函数声明)

case 2与case 46节点构建

case 21(算术运算)

case 21节点构建

反编译结果

对所有执行case块进行相应的节点构建后
运行程序
就得到了一份反编译代码

查看反编译代码
很容易就找到了加密方式

加密结果拼接

还有几个环境检测

运行环境检测

因为反编译后的代码有些难以阅读
同样需要进行优化
这时可以选择手动优化
也可以选择使用AI进行优化
这里我选择使用AI进行优化
优化完成后
就得到了一份程序功能等价
可阅读性和可调试性更高的代码

将优化后的代码替换浏览器的JSVMP代码

然后查看加密结果

最后查看验证请求
成功的通过了验证
说明反编译代码没有问题

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 3:59:44

小红书链接解析神器:5分钟从链接小白到解析高手

你是不是也遇到过这样的尴尬?精心复制的小红书链接,粘贴到下载工具后却显示"无效链接",然后一脸茫然地不知道问题出在哪里?本文将带你深入了解XHS-Downloader的智能解析黑科技,通过"问题诊断→工具选择…

作者头像 李华
网站建设 2026/5/9 23:40:28

小红书无水印下载神器:零基础轻松掌握完整指南

小红书无水印下载神器:零基础轻松掌握完整指南 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader 想要保…

作者头像 李华
网站建设 2026/5/10 9:11:14

零基础入门USB_Burning_Tool刷机工具烧录模式激活

从零开始掌握USB直刷:Amlogic设备救砖与量产的终极武器你有没有遇到过这样的情况?手里的电视盒子突然开不了机,屏幕一片漆黑,ADB连不上,SD卡也启动不了——彻底“变砖”。或者你在做嵌入式产品开发,产线需要…

作者头像 李华
网站建设 2026/5/10 1:56:57

[特殊字符] Git “Show“ 命令详解:打开你的代码“时光机”

发布日期:2025年12月26日 核心标签:Git Show, 代码审查, 版本控制, 调试技巧🎬 引言:为什么你需要这个命令?想象一下这个场景: 你正在排查一个 Bug,通过 git log 你找到了一个可疑的提交&#x…

作者头像 李华
网站建设 2026/5/10 19:18:53

S32DS安装教程:Linux平台下的操作指南

在Linux上搭建S32DS开发环境:从零开始的实战指南 你有没有遇到过这样的场景?刚拿到一块S32K144评估板,满心欢喜地打开Linux主机准备写代码,结果点开S32 Design Studio却弹出一堆错误——“Failed to load JNI shared library”、…

作者头像 李华
网站建设 2026/5/9 6:53:57

ncmdump终极解密指南:快速解锁网易云音乐加密文件

ncmdump终极解密指南:快速解锁网易云音乐加密文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐的NCM加密格式而烦恼吗?这些只能在特定平台播放的音乐文件限制了你的收听自由。ncmdump作为…

作者头像 李华