r44336742-ctrl/js-deobfuscator-vm

GitHub: r44336742-ctrl/js-deobfuscator-vm

js-deobfuscator-vm:用于提取和评估JavaScript混淆器中字符串解密函数的安全静态分析工具。

Stars: 0 | Forks: 0

# JS 反混淆 VM 一个安全的静态分析工具,旨在使用 Node 的隔离 `vm` 上下文动态提取和评估来自 obfuscator.io (javascript-obfuscator) 打包的字符串解密函数。 ## 工作原理 使用 `javascript-obfuscator` 混淆的打包文件将字符串字面量存储在全局数组函数中(例如 `a0_0x1364()`),并在运行时使用旋转解码器函数(例如 `a0_0x174d()`)解密,在执行洗牌程序后。 此模块提取这些特定的定义,将它们从执行上下文的其余部分隔离出来,并在沙盒化的 `vm` 上下文中运行它们。这返回了原生解码器函数作为标准 JavaScript 函数,让您可以程序化地解密任何字符串偏移量。 ## 安装 ``` npm install js-deobfuscator-vm ``` ## 快速开始 ``` const ObfuscatorDeobfuscator = require('js-deobfuscator-vm'); const deobfuscator = new ObfuscatorDeobfuscator('./obfuscated-bundle.js'); // Extract the decryption function const decrypt = deobfuscator.extractDecryptor( 'a0_0x1364', // Name of global array function 'a0_0x174d', // Name of decrypter function '}}(a0_0x1364,0x535c5)', // End marker of shuffle loop IIFE { balanceParens: true } // Autocorrect unclosed parenthesis inside obfuscator outputs ); // Decrypt specific offsets using evaluated context console.log("vote_url:", decrypt(0xa21, 'A3Ms')); console.log("method:", decrypt(0xd41, 'E@8g')); ``` ## API 参考 ### `new ObfuscatorDeobfuscator(sourcePath)` * `sourcePath` (String): 被混淆脚本文件的相对或绝对路径。 ### `deobfuscator.extractDecryptor(arrayName, decoderName, shuffleMarker, options)` * `arrayName` (String): 字符串存储数组函数的名称。 * `decoderName` (String): 字符串解密处理函数的名称。 * `shuffleMarker` (String): IIFE 数组洗牌器的确切结束字符串。 * `options` (Object - 可选): * `balanceParens` (Boolean): 向混淆包内部未关闭的 IIFE 声明追加一个闭括号(默认:`true`)。 ## 许可证 MIT
标签:MITM代理, 数据可视化, 自定义脚本