智猩猩AI整理
编辑:汐汐
3月31日,Claude Code源码意外泄露,AI圈瞬间风起云涌。社区镜像、下载、分析、复现如潮水般涌来,开发者们彻夜挖掘这个官方CLI工具的每一行逻辑。
源码分析后,开发者们很快发现Anthropic内置了一个“原生认证层”,cch签名系统。它并非简单的JS层校验,而是深藏在定制Bun运行时(Zig编译的ARM64原生代码)中的请求完整性保护机制,像一道隐形枷锁,将订阅Token牢牢绑定在官方客户端上,任何第三方尝试都会因签名失效而被服务器直接拒绝。

4月1日,该签名系统被社区完全逆向破解,仅存活短短一天。开源工具终于能真正使用订阅Token,Anthropic精心构筑的客户端生态锁定策略被当场击穿!从此,订阅用户无需额外购买API Credits,即可在任意开源客户端中自由调用Claude模型,这一突破标志着AI工具生态中“开放 vs 生态锁定”博弈的又一次重大转折。

01 “开源闪电战”:签名系统曝光与破解
一、事件起源
3月31日,Claude Code因失误导致源码泄露,完整的Agent Harness,包括REPL交互界面、权限管理系统、后台守护进程、以及核心的请求构建逻辑全部暴露。
这为后续逆向提供了最直接、最完整的第一手资料。
二、签名系统曝光:Anthropic的客户端生态锁定设计
泄露中最致命的发现,是一个嵌入在x-anthropic-billing-header中的“cch”签名系统。
该字段作为system数组的首个元素,以固定格式出现在请求体中:
x-anthropic-billing-header:cc_version=2.1.37.fbe; cc_entrypoint=cli; cch=a112b;其中cch=后跟5字符十六进制哈希,cc_version还带有一个由首条用户消息特定字符+固定salt经SHA-256计算得出的3字符后缀。
核心计算完全不在JS层,而是在Claude Code定制的Bun运行时(Zig编译的原生nativeFetch)中动态完成。
先用紧凑JSON序列化(separators=(",", ":"))处理整个请求体(含messages、tools、metadata等),再以硬编码种子0x6E52736AC806831E执行xxHash64哈希,取结果& 0xFFFFF并转为零填充小写十六进制,最后原地替换字符串中的cch=00000占位符。
Anthropic的意图极为明确,通过这一“原生认证层”,强制订阅用户(每月固定费用、性价比远高于API Credits)只能在官方客户端内使用Token。第三方工具若自行编译或绕过,就会发送cch=00000,服务器可瞬间识别为“非官方构建”,从而彻底锁死订阅流量外溢,实现典型的客户端生态锁定策略。
三、逆向破解全过程
4月1日凌晨,@paoloanzn率先在X平台公开cch机制并发起逆向挑战。

短数小时后,开发者@ssslomp完成核心突破。
他先用mitmproxy黑盒拦截真实请求,构建142组输入输出对照样本,锁定cch=00000占位符;
随后用LLDB动态附加运行中的Bun进程,在请求体字符串特定内存区域设置写监视点(watchpoint),精准命中无名Zig函数;
反汇编后发现内联的xxHash64完整实现(含prime constants与数据段种子),同时确认cc_version后缀由首条用户消息特定字符+固定salt(59cf53e54c78)经SHA-256计算得出。
最终仅用30行Python写出PoC,一键生成有效cch并正确处理JSON键序与非计费system块。代码如下:
#!/usr/bin/env python3"""PoC: Claude Code fast mode with native cch hash — no Bun binary required.Usage: uv run --with xxhash python3 poc_fast_mode.py"""import hashlib, json, os, subprocess, uuid, urllib.request, xxhashCCH_SEED = 0x6E52736AC806831EVERSION = "2.1.37"SALT = "59cf53e54c78"API_URL = "https://api.anthropic.com/v1/messages?beta=true"PROMPT = "Say 'hello' and nothing else."# OAuth token from macOS keychain (same store Claude Code uses)creds = json.loads(subprocess.check_output([ "security", "find-generic-password", "-a", os.environ["USER"], "-s", "Claude Code-credentials", "-w"], text=True).strip())TOKEN = creds["claudeAiOauth"]["accessToken"]# cc_version suffix: sha256(salt + 3 chars from user message + version)[:3]chars = "".join(PROMPT[i] if i < len(PROMPT) else "0" for i in (4, 7, 20))suffix = hashlib.sha256(f"{SALT}{chars}{VERSION}".encode()).hexdigest()[:3]# Build body with cch=00000 placeholderbody = json.dumps({ "model": "claude-opus-4-6", "max_tokens": 32000, "stream": False, "thinking": {"type": "adaptive"}, "research_preview_2026_02": "active", "metadata": {"user_id": f"user_poc_session_{uuid.uuid4()}"}, "system": [{ "type": "text", "text": f"x-anthropic-billing-header: cc_version={VERSION}.{suffix};" f" cc_entrypoint=cli; cch=00000;" }], "messages": [{"role": "user", "content": PROMPT}],}, separators=(",", ":"))# Compute cch: xxHash64(body_with_placeholder, seed) & 0xFFFFFcch = format(xxhash.xxh64(body.encode(), seed=CCH_SEED).intdigest() & 0xFFFFF, "05x")body = body.replace("cch=00000", f"cch={cch}")print(f"cch={cch} cc_version={VERSION}.{suffix}")# Send requestreq = urllib.request.Request(API_URL, data=body.encode(), method="POST", headers={ "Content-Type": "application/json", "Authorization": f"Bearer {TOKEN}", "User-Agent": "claude-cli/2.1.37 (external, cli)", "anthropic-version": "2023-06-01", "anthropic-beta": "claude-code-20250219,oauth-2025-04-20," "adaptive-thinking-2026-01-28," "research-preview-2026-02-01", "x-app": "cli",})try: resp = urllib.request.urlopen(req) data = json.loads(resp.read()) print(f"HTTP {resp.status} — model={data['model']}, tokens={data['usage']}") for block in data.get("content", []): if block["type"] == "text": print(f"\n{block['text']}")except urllib.error.HTTPError as e: print(f"HTTP {e.code}: {e.read().decode()[:500]}")完整的博客内容详见网址:https://a10k.co/b/reverse-engineering-claude-code-cch.html
距离“破解宣告”发帖后8小时左右,@paoloanzn发布贴文,称已经完成了Claude Code签名系统的破解。


02 用户与厂商的“猫鼠游戏”:像苹果一样的闭源生态
Claude Code源码泄露一事引发了大量开发者和用户的关注,各种镜像、代码仓库和复现也开始涌出,全球开发者对Claude Code的源码分析也如火如荼地进行。而此次Claude Code签名系统的逆向破解,也自然引发了大量关注。
开发者Peet对比TikTok的签名请求,开始担心这可能会演变为“猫鼠游戏”。

他在随后的回复中说到,下一步或许厂商会使用更多的方法识别并封锁所有使用当前被破解的方法的用户。

Agent开发者Adam分析称,cch不仅仅只是简单的DRM(Digital Rights Management,数字版权管理),更是一个区分官方与非法分支的方法,并提出了溯源的问题。

还有用户评论说,这种反向破解让人震惊,但是Anthropic可能很快就会有不同的验证机制。

也有用户表示,CCH破解后,Anthropic的订阅可以用在其他地方了,但是这对Anthropic的订阅模式来说就完全是灾难。

JS架构师Alex分析,认可Zig设计的聪明之处,但是直至问题核心,也就是商业模式的锁定,让订阅模式的token无法离开官方客户端,就像苹果的闭源生态一样。

03 “官方体验”与“开源自由”:社区协作的重大胜利
OpenClaw早已证明,性价比高、自主可控、真正属于开发者的AI工具会深受社区喜爱。Anthropic采取的策略并非不行,但是对开发者来说,其昂贵的价格早已被人诟病。
Claude Code源码泄露后一天时间,其订阅模式的签名系统就被破解,Anthropic想要通过当前的方式控制订阅流量的策略暂时失效,用户现在不需要购买API就能调用Claude模型。
这远不止是一次技术“小胜利”,更是堪称开源社区高效协作的教科书式样本。社区广泛传播的源码、AI辅助工具的高效分析、以及各种技术细节,在社区开发者协作的组合拳下显得犹如薄纸。
对开发者来说,这多了一个更加“相对平价”的使用途径,至少目前不用在“官方体验”与“开源自由”之间二选一,在这场用户和厂商的游戏里,或许会进入一个更严苛的技术封锁的新博弈阶段。