{
  "added_at": "2026-11-02",
  "additional_evidence_urls": [
    "https://github.com/vicnaum/bun-demincer/blob/7cfe9254bca0ce7428a5574d7da8d4d8e51f511c/package.json",
    "https://github.com/vicnaum/bun-demincer/blob/7cfe9254bca0ce7428a5574d7da8d4d8e51f511c/.env.example",
    "https://github.com/vicnaum/bun-demincer/blob/7cfe9254bca0ce7428a5574d7da8d4d8e51f511c/.gitignore",
    "https://github.com/vicnaum/bun-demincer/blob/7cfe9254bca0ce7428a5574d7da8d4d8e51f511c/docs/BUN.md",
    "https://github.com/vicnaum/bun-demincer/blob/7cfe9254bca0ce7428a5574d7da8d4d8e51f511c/src/extract.mjs",
    "https://github.com/vicnaum/bun-demincer/blob/7cfe9254bca0ce7428a5574d7da8d4d8e51f511c/src/match-vendors.mjs",
    "https://github.com/vicnaum/bun-demincer/blob/7cfe9254bca0ce7428a5574d7da8d4d8e51f511c/src/ai-rename.mjs",
    "https://github.com/vicnaum/bun-demincer/blob/7cfe9254bca0ce7428a5574d7da8d4d8e51f511c/src/cluster-graph.mjs",
    "https://github.com/vicnaum/bun-demincer/commit/4ff57a9fff40b2a509b32cfd93d76a22fd37933a"
  ],
  "category": "javascript-electron",
  "description_en": "Node.js pipeline that recovers readable JavaScript from Bun-compiled standalone executables. It extracts the embedded module graph and assets, splits the bundle into one file per module, flags npm vendor code with a fingerprint database, and deobfuscates with wakaru, format-preserving renames recovered from export mappings and optional Gemini-suggested names. Dependency-graph clustering, manual or LLM-assisted cluster labels and cross-version artifact transfer then organize and update the output.",
  "description_zh": "从 Bun 编译的独立可执行文件中恢复可读 JavaScript 的 Node.js 流程。它提取内嵌的模块图和资源，把打包代码拆成每个模块一个文件，用指纹库标记 npm 第三方代码，再借助 wakaru、依据导出映射恢复名称的保格式重命名以及可选的 Gemini 命名建议进行反混淆。之后通过依赖图聚类、手工或借助 LLM 的聚类命名，以及跨版本迁移已有成果，来整理和更新输出。",
  "entry_url": "https://awesomerea.org/resources/bun-demincer/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/bun-demincer/",
  "evidence_url": "https://github.com/vicnaum/bun-demincer/blob/7cfe9254bca0ce7428a5574d7da8d4d8e51f511c/README.md",
  "group": "tools",
  "id": "bun-demincer",
  "json_url": "https://awesomerea.org/resources/bun-demincer/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/bun-demincer/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/bun-demincer/index.md",
  "name": "bun-demincer",
  "name_zh": "bun-demincer Bun 可执行文件 JavaScript 还原工具",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "The reviewed master commit of 2026-03-06 is the repository’s ninth, three days after its initial release commit of 2026-03-03; there are no tags or releases. It needs Node.js 18+ and the npm dependencies in package.json, including node-canvas for cluster PNGs; Bun is needed only to run extracted code. The README says Bun stores the code in a __BUN Mach-O section, appended ELF data or a .bun PE section; extract.mjs parses the Mach-O section header and otherwise searches for Bun's trailer.",
    "Input is a Bun-compiled executable; the repository contains no target binaries or recovered code, and .gitignore excludes pipeline output. data/vendor-fingerprints-1000.json (26 MB) holds property-name and string-literal fingerprints for 23,746 files from 1,668 npm packages and can be rebuilt from a local node_modules. The README says steps 1–4 are automated, while cluster labels need manual input or an LLM.",
    "ai-rename.mjs and ai-rename-scoped.mjs send module source to Google's Gemini API with a GEMINI_API_KEY (default model gemini-3-flash-preview); their names are model suggestions. The README's round-trip reassembly calls a build.mjs it marks as part of the user's project, which this repository does not contain.",
    "The reviewed tree has no tests or CI. The README states MIT, but there is no license file and package.json has no license field. Four of the nine commits carry a Claude Opus 4.6 co-author trailer."
  ],
  "requirements_zh": [
    "所审阅的 master 提交（2026-03-06）是仓库的第九个提交，距 2026-03-03 的初始发布提交仅三天；没有标签或发布版本。需要 Node.js 18+ 及 package.json 中的 npm 依赖，其中 node-canvas 用于生成聚类 PNG；只有运行提取出的代码时才需要 Bun。README 称 Bun 将代码存放在 Mach-O 的 __BUN 节、追加在 ELF 末尾的数据或 PE 的 .bun 节中；extract.mjs 会解析 Mach-O 节头，否则直接搜索 Bun 的结尾标记。",
    "输入是 Bun 编译可执行文件；仓库不含任何目标二进制或恢复出的代码，.gitignore 也排除了流程输出。data/vendor-fingerprints-1000.json（26 MB）收录 1,668 个 npm 包中 23,746 个文件的属性名与字符串字面量指纹，可从本地 node_modules 重建。README 称第 1–4 步全自动，而聚类命名需要手工完成或借助 LLM。",
    "ai-rename.mjs 和 ai-rename-scoped.mjs 会使用 GEMINI_API_KEY 把模块源码发送到 Google Gemini API（默认模型 gemini-3-flash-preview），所得名称只是模型建议。README 的回装步骤调用一个标明位于使用者项目中的 build.mjs，本仓库并不包含它。",
    "所审阅的文件树中没有测试或 CI。README 声明 MIT，但仓库没有许可证文件，package.json 也没有 license 字段。九个提交中有四个带有 Claude Opus 4.6 的共同作者标记。"
  ],
  "targets": [
    "app",
    "binary"
  ],
  "url": "https://github.com/vicnaum/bun-demincer",
  "verification": "source-reviewed",
  "verified_at": "2026-10-20"
}
