JavaScriptVM 混淆

将您的代码转换为运行在 JS 虚拟机上的自定义字节码 - 现已支持高级 Self Defending、Debug Protection 与反 LLM/CDP 对抗措施。

看看 VM 混淆的实际效果

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

混淆前

可读的源代码

battle-simulator.js

混淆后

受 VM 保护的字节码

battle-simulator.protected.js

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

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

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

claude

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

❯

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

⏺︎

我先来读一下这个文件。

几个小时后

⏺︎

我把整段会话都耗在这上面,却毫无进展。

我把惯用的招数都试了一遍 - 静态分析、运行时插桩、Hook、沙箱执行、自制工具。静态上根本拆不开这段字节码:解码它的密钥只在运行中的程序内部才会生成。于是我改用 CDP 调试器在运行时把它 dump 出来 - 可 anti-CDP 防御在检查器一连接的瞬间就发现了它,要么污染状态,要么直接中止运行。

每一条进入的路径都被盯着。静态只给我留下一团不透明的数据,而为了拆开它转向动态,恰恰正是 anti-CDP 这层专门用来抓的行为。

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

❯

花了几十万 token,它却连门都没进去……

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

背后的机制

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

VM Self Defending

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

代码完整性校验

函数 Hook 检测

代理与拦截陷阱

调用栈校验

破坏智能体工作流

VM Debug Protection

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

DevTools 检测与响应

断点失效处理

运行环境指纹识别

诱饵字节码误导

反 LLM/CDP 分析防御

基础混淆与 VM 混淆对比

逐项功能对照

功能基础VM 混淆

String Array Encryption

Control Flow Flattening

Dead Code Injection

简单

高级

Self Defending

简单

高级

Debug Protection

简单

高级

字节码虚拟化

字节码加密

代码完整性校验

反 Hook 与防篡改

反 LLM/CDP 防御

JavaScript 代码保护的应用场景

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

HTML5 游戏

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

SaaS 应用

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

授权软件

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

浏览器扩展

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

为团队打造

席位、共享预设和团队服务密钥,让保护成为团队标准,而不是某个人的一次性设置。

配置只需保存一次,即可在每个产品和流水线中复用

归团队所有的 CI 服务密钥,移除成员后仍可继续使用

对整个团队强制统一的混淆器版本和预设

将每次构建固定到精确版本,或固定到能够跟踪 minor 和 patch 发布的灵活范围

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

查看价格方案

常见问题