No description
- JavaScript 100%
| assets | ||
| src | ||
| .gitignore | ||
| asset_names.txt | ||
| build.sh | ||
| README.md | ||
Claude Code 原生二进制 → 源码抽取 & 重建
结论
node_modules/@anthropic-ai/claude-code-win32-x64/claude.exe(Bun 编译的 Windows PE)中,
业务 JS 源码以 约 1640 个 ES Module 形式内嵌,可从 __BUN 虚拟文件系统
(B:/~BUN/root/)抽出。已实测。
抽取流程(逆向要点)
- 定位内嵌模块流:一段连续可读区,随版本平移。pipeline 按
// @bun @bytecode分隔簇动态定位,不写死偏移。 - 模块分隔符:每个模块以
// @bun @bytecode\n开头、\x00结尾。 - 命名的核心突破:文件末尾路径表(
B:/~BUN/root/*.js按序去重) 与源码区模块顺序一致(验证:模块[3] = ISSUES_EXPLAINER = 名表[3];模块[5] = 入口 cli.js)。 故module_XXXX ↔ 名表[XXXX]。注意导出符号名会被压缩器改名(如iP→uP),但位置稳定。 - 跨模块导入为绝对虚拟路径
B:/~BUN/root/chunk-*.js,改写为相对./chunk-*.js。
重建
cd rebuild
bash build.sh # 由 src/ 生成 dist/cli.js 并拷贝 chunk,验证 --version
# 等价手写命令:
# bun build src/cli.js --target=bun --format=esm --outfile=dist/cli.js
# 把其余 chunk 拷到 dist/(供运行时动态 import() 解析)
产物
src/:按 chunk 名命名的模块源码(导入已相对化)。已跟踪。dist/cli.js:重建的单文件 CLI 入口(约 38MB)+ 同级 chunk 兄弟文件。 由build.sh生成、已被.gitignore忽略(不纳入版本库)。assets/:约 58 份嵌入式明文文本资产,按内容分类(见下)。- 对应的原始抽取物与脚本在上级仓库:
cli_extract/(中间态)与extract_scripts/(pipeline)。
嵌入文本资产(约 58 份)
与 JS 源码分离的第二类嵌入文件:markdown 技能、API 参考、文档、HTML 片段、脚手架。
加载方式为 readFileSync("B:/~BUN/root/X")(本二进制这些资源均为明文;.zst 后缀仅标记,
实测全文件无有效 zstd 帧,故加载器的 zstd 兜底分支未触发)。完整索引见
assets/INDEX.md。
| 分类 | 数量 | 说明 |
|---|---|---|
skill/ |
10 | Claude Code 技能(---\nname: 前置):plugin-authoring、artifact-*、run、doc 等 |
api-reference/ |
19 | SDK 多语言参考:C# / Go / Java / PHP / Python / Ruby / TypeScript 的 Files / Streaming / Message Batches / Tool Use / Claude API |
docs/ |
15 | 知识文档:MCP Discovery、Live Documentation Sources、Claude Tag、Platform Availability、Example 等 |
html/ |
4 | HTML 骨架/片段(Artifact-tool body fragment 等) |
scripts/ |
8 | JS 脚手架/工具(probe.mjs、runner scaffold、#!/usr/bin/env node) |
misc/ |
2 | 其他提示文本(autonomous-loop preamble 两版) |
已知差异
dist/cli.js可运行到--version;--help部分路径仍依赖资产在虚拟路径B:/~BUN/root/X下可读。要让运行时完整加载这些资产,需把assets/内容 按虚拟路径重新编译成完整 Bun standalone(bun build --compile),静态反编译阶段无法一步到位。- 资产按内容标题命名,与 Bun 内部哈希文件名(
asset_names.txt)非一一对应; 权威「哈希名 ↔ 内容」索引未能从二进制的 VLQ/sourcemap 混合元数据中反向推出。
生成
最近源文件 GIT_SHA 见 exe 内嵌 BUILD_TIME。