如何将修改后的二级混淆JS代码转为第一级的十六进制字符串变量b
实现步骤
步骤1:提取第二级原始可执行代码
你直接粘贴第二级代码报错是因为你看到的仅为混淆后的字面量,缺少配套的解码执行上下文。你可以先修改第一级代码,直接输出解码后的内容到控制台,不执行eval即可拿到完整明文:
var b = "你原有的完整b变量十六进制字符串"; var z = ""; for (var i = 0; i < b.length; i += 2) { z += String.fromCharCode(parseInt(b.substring(i, i + 2), 16)); } // 直接输出明文不执行 console.log(z);
把这段代码放到控制台运行,就能拿到完整的、可直接修改的第二级混淆代码明文。
步骤2:添加调试语句
拿到上一步输出的z的内容后,在你需要调试的位置插入console.log语句即可,比如要打印某个变量值,就加console.log('调试变量xxx:', xxx),修改完成后复制整段代码备用。
步骤3:将修改后的代码编码为十六进制字符串
用以下编码函数把修改后的代码转成和原b变量格式一致的十六进制串:
function strToHex(str) { let hex = ''; for(let i=0; i<str.length; i++) { // 每个字符转两位十六进制,不足补前导0 hex += str.charCodeAt(i).toString(16).padStart(2, '0'); } return hex; } // 把你修改完成的第二级完整代码放在模板字符串里传入 const modifiedCode = `你修改完成的完整第二级代码内容`; const newB = strToHex(modifiedCode); console.log('新的b变量值:', newB);
步骤4:替换原代码的b变量
把上一步输出的newB的值替换掉原第一级混淆代码里的b变量值,新的代码就可以正常用eval执行,同时输出你添加的调试日志。
注意事项
- 转码时建议用模板字符串包裹修改后的代码,避免引号、换行等特殊字符的转义问题
- 如果修改后的代码里包含反引号,需要先对反引号做转义处理
内容的提问来源于stack exchange,提问作者HOOOPLA
相关产品推荐
相关产品推荐

