详解 Claude Code 源码
赛博浮世绘 · 晓风乾 · 24 站拆解
回首页
详解 Claude Code 泄露与全景 1.2 · 明文侦察实验
篇章一 · 1.2

明文侦察实验

上一站看了泄露的「怎么发生的」,这一站亲手验证「minify 到底挡住了什么」——结论是:几乎什么都没挡住。

148,000 个字符串,一个都没加密

很多人以为 Claude Code 的代码是「加壳」的。逆向分析给出明确答案:只做了 minify(压缩),完全没做 obfuscation(混淆)。前者是给 bundler 减体积,后者才是提高逆向成本的手段。

minify ≠ 混淆
对抗逆向的技术实际使用?
变量名压缩(mangling)标准 minify
字符串加密
控制流扁平化
死代码注入
防篡改 / 自检
字符串数组轮换

结果:13MB 产物里 148,000+ 个字符串字面量全部明文——系统提示、工具描述、错误信息,直接用文本编辑器就能搜到。

侦探实验台 · 这面墙就是 cli.js 的一角
每个格子是一个字符。三种照射方式,逐个点上——看各能照出什么。
REPL.tsx875KBaa = getSystemPrompt
main.tsx785KB
AgentTool228KB
query.tsQk = queryLoop
1,902 个文件 · 面积 ≈ 体积 · 注释与目录结构全部回来了
选一种照射方式 →
🏅 三种手段集齐 · 结案
不用 Source Map,明文 bundle 里就能读到的
837
tengu_ 遥测事件内部代号,暴露产品路线
504
环境变量实验性功能开关
3,196
错误信息含硬编码端点与 OAuth URL
1,000+
系统提示片段全部明文可搜
过站检查
① 想让源码「真正难被读懂」,该上哪种手段?
混淆只能提高成本,不能根除——决心足够的逆向者照样能拆。而 minify 的目的是减小体积,压根不为保密。Claude Code 只做了 minify。
② 对 Anthropic 来说这次泄露是…
2025-02 的 0.2.8 已泄过一次 Source Map,十三个月后在 2.1.88 重演——官方定性「人为打包失误」。重复性供应链事故,才是全行业该记的笔记。
答完两题,这里给你盖章。
本站要点:minification 不提供任何保密性——尤其面对 LLM:模型读压缩代码和读格式化代码一样容易。下一站把视角拉高:51 万行代码的全景地图。