JavaScript反混淆工具
粘贴一段经过混淆处理的JavaScript代码(包含十六进制编码字符串、单字母变量名以及顶部的解码循环),该工具便会逐步解析其结构:转换转义字符串、将查找数组内联化、将变量重命名为可读的占位符、简化冗余包装结构并美化输出结果。该工具特别适用于分析从网页或Pastebin链接中截取的可疑代码片段。
如何解密JavaScript代码
-
1
粘贴加密后的源代码
经`javascript-obfuscator.io`格式工具压缩、打包或输出的文件。
-
2
让解析器遍历它
字符串数组被解码,数值序列被计算处理,并剪除无效代码分支。
-
3
应用重命名
单字母变量 `a`/`b`/`c` 将重命名为 `var1`、`var2` 等,这些为可读占位符,未必具有实际含义。
-
4
美化
进行代码标识、添加换行符,并输出可直接阅读并理解的代码。
解密工具所使用的反向处理技术
| 隐匿化 | 逆转 |
|---|---|
| 十六进制转义字符串字面量 | 将 \x48\x69 解码为 "Hi" |
| Unicode 转义标识符 | \u006E\u0061\u006D\u0065 -> name |
| 字符串数组 + 解码器函数 | 将数组内联处理,并在解析时调用解码器 |
| 数值常量折叠 | 0x1F3 + 5 -> 504 |
eval(...) 包装器 |
将内部代码提升至顶层 |
| 控制流扁平化(状态机) | 检测分支条件,重建执行流程 |
| 无效代码/无用的三元条件判断 | 移除从未执行的分支 |
_0x1a2b3c() 样式名称 |
替换为递增的 var1、var2 |
限制:该工具无法实现的功能
- 恢复原始变量名称。当
userEmail更名为a后,任何工具都无法反推其原名;系统将呈现可读的结构而非原始含义。 - 解压自定义虚拟机程序。重量级商业混淆工具(如 JScrambler 或 Obfuscator.io 的企业级版本)会生成能够解析字节码的定制虚拟机;要破解这些工具需进行手动逆向工程。
- 运行任意代码。 解混淆工具会静态评估纯表达式,不会获取远程资源、创建DOM元素或与网络通信。
典型用例
- 安全研究:对通过电子邮件收到或由被攻破的 CDN 传播的可疑脚本进行深入分析。
- 代码考古学:从仅存精简代码包的遗留代码中进行恢复。
- 学习:深入理解教程级混淆技术在底层的实际运作机制。
安全与伦理
切勿在登录重要账户的浏览器标签页中运行不可信的JavaScript代码,此类代码可能读取Cookie、调用内部API并窃取用户状态信息。反混淆工具本身仅对源代码进行文本解析,不会执行您粘贴的实际代码。
仅可解密您有权分析的代码。反向工程许可软件在您的司法管辖区可能受到限制。
常见问题
不。一旦混淆工具将 userEmail 重命名为 _0x1a2b3c,原始名称即被丢失。解混淆工具可生成可读的占位符(如 var1、var2)并还原正确的结构,但无法恢复原始的语义名称。
不。它将代码解析为抽象语法树(AST)并应用静态转换。纯表达式(如 0x1F3 + 5)会被折叠处理,但不会涉及网络、Cookie 或 DOM。
是的,但打包器输出的是经过精简而非刻意混淆的代码,因此最终结果只是经过美化且保留了模块包装层的代码。如果单独提供源代码映射文件,可获得更清晰的命名方案。
大型商业工具(如企业级JScrambler、定制虚拟机)会引入静态分析无法解析的字节码解释器。这些工具虽能获取表层代码,但核心逻辑仍难以理解,除非进行手动逆向工程。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
邮箱验证器
验证邮箱地址:RFC 5322 语法检查、实时 MX 记录查询,并显示本地部分、域名和长度详情。不会发送任何邮件。
编辑器配置生成器
根据你的缩进样式与大小、行尾、字符集和空格规则生成 .editorconfig 文件,让不同集成开发环境(IDE)和编辑器的格式保持一致。
证书解码器
粘贴一张 X.509 PEM 证书,并查看解码后的字段:主体、颁发者、序列号、签名算法、有效期及主体备用名称(SAN)。
此工具还提供其他语言版本
- Trình giải mã mã JavaScript (JavaScript Deobfuscator) [VI]
- JavaScript-Deobfuscator [DE]
- Desofuscador de JavaScript [PT]
- 자바스크립트 디오프스버커 [KO]
- เครื่องถอดรหัส JavaScript [TH]
- أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator) [AR]
- JavaScript-deobfuscator [SV]
- JavaScript-deobfuscator [NL]
- Déobfuscateur JavaScript [FR]
- Deobfuscator JavaScript [ID]
- JavaScriptデオブファスカータ [JA]
- Deobfuskator JavaScriptu [PL]
- Desofuscador de JavaScript [ES]
- JavaScript Deobfuscator [EN]
- Deobfuscator JavaScript [IT]
- JavaScript-деобфускатор [RU]
- JavaScript Deobfuscator [TR]