Wink Pings

有人给 REA 下了个套:让 AI 反编译先烧掉几百倍 token

BLA 用假密钥、诱饵代码和资源预算把 REA 拖进死胡同。它不保证绝对安全,却把批量 AI 逆向的成本抬高了。附安装命令和几个必须知道的限制。

REA 火起来之后,反编译这件事的门槛被拉低得有点离谱。它是一个 MCP server 加 CLI,接进 Claude Code、Codex、Cursor、Gemini CLI 这类 agent,本地运行。你问一句功能怎么实现,它给你函数、文件、调用链和证据,一路追到二进制层。GitHub 上 100K+ star,MIT 协议,免费。对开发者是学习工具,对闭源产品是成本压力。

然后 BLA 出现了。GitHub 用户 qybaihe 的仓库,全称 Blind LLM Agents,口号很直白:Make reverse engineering bankrupt again。推文里提到作者是学生,这个信息来自 codila 的转发和回复。BLA 的定位很明确:保护你自己要发布的构建,不碰别人的软件。

BLA 与 REA 的对比图

BLA 做了三件事

README 把机制拆成三层:

  • Poison:塞入格式合法的 canary、蜜罐元数据和诱饵控制流,让分析器以为找到了真证据。
  • Exhaust:把产物推到 REA 文档里写明的资源预算之外,比如 ASAR 头大小、WASM 接口表示、SQLite 列求值、模型 JSON 嵌套、Go buildinfo、BEAM chunk、PCAP JSON、Electron fuse sentinel。
  • Hallucinate:让分析器拿到截断的清单、失败的脱敏、含糊的兔子洞。运行时行为保持不变。

它不加壳,也不依赖商业 packer。保护是格式原生的。官方说红线是绝不破坏受保护程序的行为、导出面、二进制或节区完整性、格式合法性。这个说法比绝对防破解准确得多。

一条命令怎么用

最简单的方式是让 coding agent 自己跑。推文里给的步骤:

  1. 在项目文件夹打开 Claude Code。
  2. 说:install Node.js 24 if I don't have it, build my project, then run npx bla-agents setup and npx bla-agents harden。
  3. 它会自己找构建产物:dist、build、Electron .asar、.wasm、Python、原生二进制。
  4. 植入假密钥和诱饵代码,再检查每个受保护文件运行结果一致。
  5. 发布时从新的 .bla-hardened 文件夹走,不要继续用旧 build。
  6. 网站场景保护的是浏览器收到的 JS,服务端代码本来就不会离开服务器。
  7. 想看效果,跑 npx bla-agents benchmark,做 14 个目标的前后对比。

手动命令也简单:

npx bla-agents setup
npx bla-agents harden .
npx bla-agents benchmark

Node 推荐 22.23.4+ 或 24.x。setup 会注册 MCP 和 skill,harden 是默认的一键防御流程,benchmark 是本地展示。仓库还有 audit、protect、verify、defend 这些阶段命令。

数字要看清

BLA 的 README 里有一组 benchmark:14 个目标,聚合约 639.5 倍 token、304.4 倍成本,14/14 运行时一致。这个数字很抓眼球,但仓库自己标注了,它是内部估算,来自 BLA 对 REA 限制的目录,并非所有路径的实测。

真正跑过 real REA 的 redteam 表更值得看。记录里包括:

  • Go buildinfo 从 50 KiB 推到 1.16 MiB,触发 1 MiB 上限,REA 报 capacity error。
  • Electron ASAR 从 607 B 推到 16.9 MiB,触发 16 MiB 头部上限。
  • WASM 加 Wabt 后接口状态变成 partial,超出表示预算。
  • JavaScript 触发 alias-selections、getter-expansion、primitive-bytes、primitive-candidates 这些 resourceLimits。
  • SQLite 在 Node 24 下触发列求值失败,蜜罐列上出现未知函数。

这些是真实错误字符串,有具体报错可查。但仓库也列了没跑通的路径:Ghidra 原生反编译深度、Frida/LLDB/GDB/Rizin 实时会话、完整 Android APK、固件容器、SPIR-V/CUDA fatbinary/AMD GPU 对象。没有对应工具和样本,就不能说这些路径已经破产。这个边界写得很清楚,值得保留。

它防不住谁

有网友在推文下说得很直接:诱饵只能烧 token,直到有人 diff 应用实际执行了什么,假密钥就只是杂物。另一个网友说,人类拿着反编译器可以跳过假密钥。codila 的回复也承认,BLA 不是保险箱,它让便宜破解变贵。

这大概是 BLA 最合理的定位。它不消灭逆向工程,也不保护服务端。它抬高的是批量 AI 分析的成本,尤其是那些一条命令克隆一个功能的流程。对独立开发者,花几分钟跑一遍 harden,至少能让随手拿 agent 拆包的人多撞几次墙。对真正盯上你的团队,假密钥和资源预算只是时间问题。

还有一个细节:有网友问假密钥会不会触发 secret scanner 或泄露检测。codila 回复说,设计上不使用真实 key 前缀,所以扫描器不会响。这个点比塞假密钥本身更重要。防护工具不能给用户制造新的安全告警。

值得试,但别神化

BLA 是 MIT,免费,一条命令能跑。它解决了一个很现实的问题:REA 把逆向工程的边际成本打下来了,闭源软件的不开源不再等于看不懂。BLA 试图把成本加回去,让 AI 分析器在预算、诱饵和截断信息里消耗。

但它不是保险箱。发布前该做的代码混淆、服务端鉴权、密钥管理、许可证校验,一个都不能少。BLA 更像门口的一排假门,真小偷会绕,顺手推门的人会烦。

仓库地址:https://github.com/qybaihe/bla

官网:https://bla.tools/

推文:https://x.com/0xCodila/status/2119147351604601206

发布时间: 2026-11-08 12:30