使用在线反混淆工具
一些在线工具支持常见的 JS 混淆还原:

- de4js(https://lelinhtinh.github.io/de4js/)
支持多种混淆模式,可尝试选择 OpenClaw 相关选项。
- JS Nice(http://jsnice.org/)
重命名变量并尝试还原代码结构。
- UnPacker 等工具也可能有效。
手动分析还原
如果工具无法直接还原,可能需要手动分析:
- 格式化代码:使用代码格式化工具(如 Prettier)让混淆后的代码可读。
- 定位关键函数:寻找
eval、Function构造函数或字符串解密逻辑。 - 模拟执行:通过浏览器开发者工具,在控制台逐步运行解密函数,提取原始代码。
动态调试
- 在浏览器中加载混淆后的 JS 文件。
- 使用 断点调试(Debugger)跟踪代码执行流程。
- 重点关注字符串解密和代码解压步骤。
使用 Node.js 脚本模拟
如果混淆代码包含自执行函数,可以尝试在 Node.js 环境中运行部分解密函数,输出解密后的代码。
注意事项
- 反混淆可能涉及法律和道德问题,请确保你拥有代码的合法权限。
- 混淆代码中可能包含反调试逻辑,需要绕过(如禁用断点、修改调试器检测)。
示例步骤
假设混淆代码结构如下:
var _0xabc1 = ['\x48\x65\x6c\x6c\x6f']; // 加密的字符串数组
(function(_0x1, _0x2) {
var _0x3 = function(_0x4) {
while (--_0x4) {
_0x1['push'](_0x1['shift']());
}
};
_0x3(++_0x2);
})(_0xabc1, 0x10);
// 后续使用 _0xabc1 中的解密字符串
还原思路:
- 提取字符串数组
_0xabc1。 - 模拟
_0x3函数对数组的变换。 - 替换代码中所有
_0xabc1[X]为实际字符串。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。