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代理, 数据可视化, 自定义脚本