JavaScriptVM 混淆

将您的代码转换为运行在 JS 虚拟机上的自定义字节码 —— 现已支持高级自我防护、调试保护与反 LLM 对抗措施。

看看 VM 混淆的实际效果

程序的行为与之前完全一致,只是再也没有可读的内容了。

混淆前

可读的源代码

calculator.js

完全暴露

混淆后

受 VM 保护的字节码

calculator.protected.js

已受 VM 保护

* 示例代码使用 vm-high-obfuscation 预设并启用高级反 LLM 防御进行混淆

原始逻辑被转换为只有内嵌虚拟机才能执行的自定义字节码。静态分析工具若不先对整个虚拟机进行逆向工程,就无法理解这些代码。

多层次的反 LLM 逆向工程防御

旨在阻断 LLM 攻击混淆代码的绝大多数手段。

claude

researcher@MacBook % claude
▐▛███▜▌ Claude Code
▝▜█████▛▘ Opus 4.7 (1M context) with xhigh effort
▘▘ ▝▝ ~/Projects/deobfuscate

逆向分析 obfuscated.js 脚本,说明它的功能并还原原始代码

⏺︎

我先来读一下这个文件。

6 小时后

⏺︎

我折腾了整整一个下午,还是没能做到。

我尝试了平时会用的所有手段 —— 静态分析、运行时插桩、Hook、沙箱执行、自研工具。我甚至没能解码字节码:解码密钥是在运行时内部计算出来的,而每一次观察运行时的尝试都会触发代码完整性校验,程序要么破坏自身状态,要么直接拒绝运行。

典型的先有鸡还是先有蛋 —— 没有运行时我读不懂字节码,而观察运行时又必然会破坏它。

我认输了。仅凭这个文件,我无法还原出源代码。

你白白浪费了几十万 token……

* 针对使用 vm-high-obfuscation 预设并启用反 LLM 防御的混淆代码所做的逆向工程。在 JS 运行环境中,运行时内存检查始终是可能的 —— 我们的防御措施提高的是达成它的代价。

背后的机制

两层相互独立的防御 —— 并内置反 LLM 对抗措施 —— 协同工作,让分析与逆向工程变得不切实际

VM 自我防护

VM 运行时在每个阶段都会校验自身完整性 —— 任何修改、Hook 注入或代理拦截都会被检测并使其失效。

  • 代码完整性校验

  • 函数 Hook 检测

  • 代理与拦截陷阱

  • 调用栈校验

  • 破坏 Agent 工作流

VM 调试保护

阻断开发者工具、断点与运行时检查 —— 使单步跟踪或观察 VM 执行过程变得极其困难。

  • DevTools 检测与响应

  • 断点失效处理

  • 执行时序校验

  • 运行环境指纹识别

  • 诱饵字节码误导

  • 反 LLM 分析防御

基础混淆与 VM 混淆对比

逐项功能对照

功能基础VM 混淆

字符串数组加密

控制流平坦化

无用代码注入

简单

高级

自我防护

简单

高级

调试保护

简单

高级

字节码虚拟化

字节码加密

代码完整性校验

反 Hook 与防篡改

反 LLM 防御

JavaScript 代码保护的应用场景

从 HTML5 游戏到企业级应用 —— 保护您的 JavaScript 免遭窃取与逆向工程

HTML5 游戏

防止玩家作弊,或竞争对手窃取您的游戏逻辑。VM 混淆让逆向工程变得极其困难。

SaaS 应用

保护专有的前端算法与业务逻辑,防止竞争对手窥探您的客户端代码。

授权软件

用抗篡改的字节码保护许可证校验、付费功能和防盗版机制。

浏览器扩展

让扩展代码远离抄袭者与恶意修改,守护您的知识产权。

准备好保护您的代码了吗?

查看价格方案

常见问题