工具
JStillery JavaScript 部分求值反混淆工具
Minded Security 的 JavaScript 反混淆工具,由 Stefano Di Paola 于 2015 年从 esdeobfuscate 分支而来,在 esprima 语法树上通过部分求值简化脚本。它会折叠常量和字符串表达式,经由变量和纯函数调用传播已知值,对内置 String、Array、Number 方法以及 atob/btoa 的调用求值,并把传给 eval 的字符串参数重新解析为代码。它可作为命令行工具处理文件或标准输入,也可作为带网页界面和 REST 接口的 Express 服务运行,或作为经 browserify 打包的库使用。
- 目标
- 网站
- 类别
- 网站分析工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- master 分支最新提交为 2019-04-22,仓库没有发布版本或标签。README 链接的 2015 年 Minded Security 博客文章称,JStillery 是一款内部工具,用途之一是分析 JavaScript 恶意软件样本、对脚本做规范化以便分类。README 还链接了托管在 mindedsecurity.github.io/jstillery 的在线 REPL,审阅时可以访问;本条目只审阅了仓库。
- 需要 Node.js 并执行 npm install;package.json 未声明 Node.js 版本,esprima、escodegen 和 esmangle 也未固定版本,且仓库没有锁文件,因此每次安装都会取它们的最新版本。命令行工具会输出原始代码和反混淆后的代码。npm run build_server 会复制网页界面并用 browserify 打包库,随后 npm run start_server 在 3001 端口提供网页界面和 /deobfuscate 接口;server_config.json 默认允许任意来源跨域访问。
- 部分求值默认开启(只有把 USE_PARTIAL 环境变量设为空字符串时才会关闭),会把输入中选定的表达式交给 Node 的 vm.runInNewContext 执行。Node 文档说明 vm 模块不是安全机制,因此应在隔离环境中分析不可信样本。
- JStillery 早于本合集收录的较新反混淆工具,例如 webcrack、javascript-deobfuscator 和 Obfuscator.io Deobfuscator;其文档未提及解包打包文件、解码字符串数组或还原控制流平坦化。tests/ 中的 mocha 测试把 JSFuck、aaencode、jjencode 和 Dean Edwards packer 等样本的输出与保存的预期结果比对,其中部分预期结果仍只是部分简化。
- LICENSE 和 README 均声明 GPL-3.0,而两个 package.json 文件都声明 ISC;src/jstiller.js 保留了 esdeobfuscate 的 BSD 式许可声明。网页界面内置了 jQuery、Bootstrap、CodeMirror、Font Awesome 和 js-beautify。所审来源未提及任何 AI 或 REA 用途,本条目也未对任何脚本进行反混淆。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · mindedsecurity/JStillery · 修订 512e9af
- package.json GitHub · mindedsecurity/JStillery · 修订 512e9af
- jstillery_cli.js GitHub · mindedsecurity/JStillery · 修订 512e9af
- src/jstiller.js GitHub · mindedsecurity/JStillery · 修订 512e9af
- server/server.js GitHub · mindedsecurity/JStillery · 修订 512e9af
- server/server_config.json GitHub · mindedsecurity/JStillery · 修订 512e9af
- tests/tests.js GitHub · mindedsecurity/JStillery · 修订 512e9af
- tests/tests_OK GitHub · mindedsecurity/JStillery · 修订 512e9af
- LICENSE GitHub · mindedsecurity/JStillery · 修订 512e9af
- https://blog.mindedsecurity.com/2015/10/advanced-js-deobfuscation-via-ast-and.html
- https://nodejs.org/api/vm.html