{
  "added_at": "2026-11-01",
  "additional_evidence_urls": [
    "https://github.com/HumanSecurity/restringer/blob/d9eae6907e14581b7934940ee0407f505b7a212b/package.json",
    "https://github.com/HumanSecurity/restringer/blob/d9eae6907e14581b7934940ee0407f505b7a212b/src/processors/README.md",
    "https://github.com/HumanSecurity/restringer/blob/d9eae6907e14581b7934940ee0407f505b7a212b/.github/workflows/node.js.yml",
    "https://github.com/HumanSecurity/restringer/blob/d9eae6907e14581b7934940ee0407f505b7a212b/tests/samples.test.js",
    "https://github.com/HumanSecurity/restringer/tree/d9eae6907e14581b7934940ee0407f505b7a212b/tests/resources",
    "https://github.com/HumanSecurity/restringer/blob/d9eae6907e14581b7934940ee0407f505b7a212b/LICENSE",
    "https://github.com/HumanSecurity/restringer/releases/tag/v2.1.0",
    "https://github.com/ctrl-escp/restringer/blob/5fe8ac8d23723810fba170972c12b4433ffba111/README.md",
    "https://github.com/ctrl-escp/restringer/blob/5fe8ac8d23723810fba170972c12b4433ffba111/package.json",
    "https://registry.npmjs.org/restringer/2.2.0",
    "https://registry.npmjs.org/restringer/2.3.0"
  ],
  "category": "web-analysis",
  "description_en": "HUMAN Security's Node.js JavaScript deobfuscator. It identifies the obfuscation type, runs matching processors for obfuscator.io, Caesar Plus and array-based patterns, then iterates 40+ AST modules that rebuild strings, resolve expressions and calls and simplify control flow; unsafe modules evaluate code in a sandbox. It works as a CLI or library.",
  "description_zh": "HUMAN Security 推出的 Node.js JavaScript 反混淆工具。它先识别混淆类型，针对 obfuscator.io、Caesar Plus 和基于数组的混淆模式运行相应处理器，再迭代执行 40 多个 AST 模块，重建字符串、求解表达式和函数调用并简化控制流；其中不安全模块会在沙箱中求值代码。可作为命令行工具或库使用。",
  "entry_url": "https://awesomerea.org/resources/restringer/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/restringer/",
  "evidence_url": "https://github.com/HumanSecurity/restringer/blob/d9eae6907e14581b7934940ee0407f505b7a212b/README.md",
  "group": "tools",
  "id": "restringer",
  "json_url": "https://awesomerea.org/resources/restringer/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/restringer/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/restringer/index.md",
  "name": "REstringer",
  "name_zh": "REstringer JavaScript 反混淆工具",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "The reviewed HumanSecurity main commit (2025-12-07) is v2.1.0 plus one README edit removing the retired REstringer.tech web tool. The author now continues the project in his fork ctrl-escp/restringer, which the npm package lists as its repository: npm 2.2.0 (2026-05-09) and 2.3.0 (2026-08-30) come from it, and at 2.3.0 its README requires Node.js 22+, makes isolated-vm optional and adds Node, Deno and Bun subprocess sandboxes, so npm installs code newer than the reviewed source.",
    "The reviewed source needs Node.js 20+ (22+ recommended) and installs as a global CLI or a module. It depends on flast, obfuscation-detector, commander and isolated-vm 5.0.4, a native module that CI builds with Python and g++. Output goes to stdout or <input>-deob.js; -m caps iterations, and -c removes dead nodes, which README marks unsafe.",
    "Input is an obfuscated JavaScript file or string. Safe modules transform the AST without evaluating code; unsafe modules evaluate parts of the input with eval() inside an isolated-vm sandbox to resolve expressions and calls.",
    "GitHub Actions runs npm test on Node.js 20 and 22. Besides module and processor unit tests, the full suite deobfuscates 11 bundled obfuscated samples, among them obfuscator.io, JSFuck and Caesar Plus scripts, and compares each result with a stored expected output.",
    "MIT, copyright 2025 HUMAN Security; the fork adds a 2026 copyright line for Ben Baryo. The repository was formerly PerimeterX/restringer, which now redirects to HumanSecurity/restringer."
  ],
  "requirements_zh": [
    "所审阅的 HumanSecurity main 提交（2025-12-07）即 v2.1.0 加上一处 README 修改，删去了已停用的 REstringer.tech 网页工具。作者现在其个人分支 ctrl-escp/restringer 中继续开发，npm 包也已将该分支列为其仓库：npm 2.2.0（2026-05-09）和 2.3.0（2026-08-30）均出自该分支；在 2.3.0 时，其 README 要求 Node.js 22+，将 isolated-vm 改为可选，并新增 Node、Deno 和 Bun 子进程沙箱，因此通过 npm 安装的代码比所审阅的源码更新。",
    "所审阅的源码需要 Node.js 20+（推荐 22+），可作为全局命令行工具或模块安装。依赖 flast、obfuscation-detector、commander 以及 isolated-vm 5.0.4；后者是原生模块，CI 借助 Python 和 g++ 构建。结果输出到标准输出或 <input>-deob.js；-m 限制迭代次数，-c 删除无用节点，README 将其标为不安全。",
    "输入为经过混淆的 JavaScript 文件或字符串。安全模块只变换 AST、不求值代码；不安全模块则在 isolated-vm 沙箱中用 eval() 求值部分输入，以求解表达式和函数调用。",
    "GitHub Actions 在 Node.js 20 和 22 上运行 npm test。除模块和处理器单元测试外，完整测试套件还会对 11 个随附的混淆样本（包括 obfuscator.io、JSFuck 和 Caesar Plus 脚本）进行反混淆，并与保存的预期输出逐一比对。",
    "采用 MIT 许可，版权归 HUMAN Security（2025）；该分支另加了 Ben Baryo 的 2026 年版权行。仓库原为 PerimeterX/restringer，现已重定向到 HumanSecurity/restringer。"
  ],
  "targets": [
    "website"
  ],
  "url": "https://github.com/HumanSecurity/restringer",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
