英语 · 简体中文 · 繁體中文 · 日本語 · 嘻嘻哈哈 · Turkce · Русский · Tiếng Việt · ไทย · 多伊奇 · 西班牙语 · 法语 · 乌克兰语 · 波兰语 · 葡萄牙商业银行(巴西) · العربية · فارسی · 印度尼西亚语 · 意大利语 · Ελληνικά · മലയാളം · 罗马乌尔都语 · 罗马ă
BLA:盲LLM代理
让逆向工程再次破产。
BLA点在你的飞船上。当AI逆向工程代理(REA)打开它时,分析器会命中资源预算、跟踪诱饵并烧掉令牌——而您的用户仍然得到相同的运行时行为。
快速启动 · 实证结果 · 报道格式 · 基准 · 常见问题解答
bla harden .
# or tell your agent: "Harden my software against REA"
[!重要的) BLA是 防守 保护工具 你自己的 软件。看到 DISCLAIMER.md. 从 qybaihe / bla 或者 npm
bla-agents.
BLA是做什么的
REA逆向工程师在一个命令中发布工件。BLA是反rea故事的一半:
| 层 | 会发生什么 |
|---|---|
| 毒药 | 种植格式有效的金丝雀、蜂蜜元数据和看起来像真实证据的诱饵控制流。 |
| 排气 | 将工件推过REA文档化的资源预算(头文件、嵌套、接口清单、PCAP JSON、融合哨兵等)。 |
| 产生幻觉 | 让分析器留下被截断的库存、编校失败和模糊的兔子洞 运行时保持不变. |
一个句子涵盖了常见的情况(自动发现) dist/ / build/ / .asar / .wasm / .sqlite / models /…并运行audit→protect→verify):
npx bla-agents harden .
# MCP / agent: bla_harden · "Harden my software against REA"
相同的管道 bla defend / bla_defend 当你已经知道道路; harden 是默认的单命令UX。
快速启动
# Node.js ^22.23.4 or 24.x recommended (REA red-team needs zlib.zstd on 22.23+)
npx bla-agents setup # register MCP + skill with your coding agent
npx bla-agents harden . # one-command Counter-REA pass on the current project
npx bla-agents benchmark # 14-target showcase (local estimates + runtime checks)
安装后询问座席(技能指南一键强化):
Harden my software against REA
或者显式运行阶段: audit · protect · verify · defend ——看 一键式座席防御 和 CLI和MCP.
实证结果与真实REA
这些数字来自跑步 真正的意图 商品硬体(npm run redteam:rea). 完整的机器可读报告: docs/redteam/empirical-rea-validation.md / .json.
阅读方法: “经验验证”意味着REA分析器路径实际上返回了在此环境中列出的预算/容量/编校失败。它是 不 关于Ghidra/Frida/LLDB/Rizin/JADX会话的声明,我们没有在这里运行。
在商品硬件上经过经验验证
记录下 节点v24.22.1 带有可选 Wabt 1.0.42 + tshark 4.4 当提到。当没有工具时,软跳过使Node 22 / CI保持绿色。
| 格式 | Before→after | BLA后的REA结果 | 预算/错误 |
|---|---|---|---|
| 去buildinfo | 50kib→1.16 MiB | 容量误差 | MAX_BUILD_INFO_BYTES (1 MiB) Go build-info字符串长度超过1 MiB限制 |
| Erlang梁 | 84 B→262 KiB | 容量误差 | max_chunks - - - - - - BEAM格式超出了64块的预算 |
| 维生素与字节码 | 16 b→ 4.00 MiB | 接近全输入上限 | EVM_INTERFACE_LIMITS.inputBytes (4 MiB) |
| PCAP | 24 B→1.29 MiB | 预算拒绝 | TSHARK_JSON_MAX_BYTES (>8 MiB)→ AnalysisResourceConstraintError (tshark存在) |
| 电子ASAR | 607 b→ 16.9 MiB | 容量误差 | DEFAULT_ASAR_MAX_HEADER_BYTES (16 MiB) |
| WASM + Wabt | 54 b→ 6.56 MiB ·出口251件 | ifaceState=partial | WASM_INTERFACE_REPRESENTATION_BYTES - - - - - - 类型化WASM接口解码超出WABT输出表示预算。处理步骤 |
| SQLite (节点24) | 12 KiB→56 KiB | 编校/列eval | SqliteColumnEvaluationFailure - - - - - -未知 enclave_unseal_payload() 在美人计栏 |
| JavaScript | 761 B→116 KiB | 预算拒绝 | alias-selections + getter-expansion + primitive-bytes + primitive-candidates (真实的意图 resourceLimits) |
| Safetensors | 128b→10.1 KiB | 容量误差 | MODEL_JSON_NESTING - - - - - - safetenors JSON嵌套超过32层 (可高频加载,张量字节不变) |
| GGUF | 24 B→7.7 KiB | 容量误差 | MODEL_METADATA_NESTING - - - - - - GGUF元数据嵌套超过32个数组帧 |
| 电子保险丝 | 50kib→1.16 MiB | 预算拒绝 | ELECTRON_FUSE_LIMITS.maximumSentinelsPerSlice (> 32) |
| 颤振池 | 50kib→1.16 MiB | 预计帽 | MAX_POOL_URIS / MAX_POOL_TOKENS (REA会用“至少N”截断) |
繁殖:
# Prefer Node 22.23.4+ or 24.x; set Wabt/tshark for full coverage
export REA_WABT_BIN_DIRECTORY=$HOME/opt/wabt-1.0.42/bin # optional
npm run build && npm run redteam:rea
设计的,但 不 这里经过经验验证
这些屏蔽存在于树中,由单元测试/目录漂移检查覆盖,但需要匹配REA路径 我们没有运行本地工具 在这个盒子上:
| 区域 | 为什么这里没有经过验证 |
|---|---|
| 本地反编译深度 | 需要一个Ghidra安装+ REA桥接 |
| Frida / LLDB / GDB / Rizin现场会话 | 需要附加那些调试器+设备/进程 |
| JADX /全Android APK管道 | APK辞职不受支持;DEX护盾在树内 |
| 固件 容器 | 跳过-存在分段/提取预算;没有固件语料库就没有诚实的E2E |
| SPIR-V / CUDA fatbinary / AMD GPU对象 | 跳过-需要原生GPU对象解码器; PTX文本 被屏蔽在树中(仅基准测试,而不是REA gpu对象预算命中) |
| EVMole进程内EVM解码 | 记录为进程中不可通行的;EVM屏蔽仍然向4mib输入方式致密化 |
我们所做的 不 声称这些路径在经验上是破产的,直到 redteam:rea (或等效的线束)记录实时分析仪的真实前后。
报道格式
| 格式 | 金丝雀+诊断 | 穷游/穷游 | 经验vs REA | 笔记 |
|---|---|---|---|---|
| JavaScript / TypeScript | ✓ | 语义预算 | 验证 (过程) | 巴别塔AST;anti-strip;real REA resourclimits |
电子 .asar | ✓ | 报头16 MiB | 验证 | |
| 电子保险丝 | ✓ | 32个哨兵 | 验证 | |
| WASM | 自定义部分 | 出口名称诱饵→什么 | 验证 (Wabt) | 软跳到预计预算没有Wabt |
Python / .pyc | ✓ | ✓ | 专为 | |
| SQLite | 蜂蜜+陷阱冷 | ✓列eval | 验证 (节点24) | 软 capability_gated 在节点22上 |
| Safetensors | 字符串元数据 | JSON嵌套> | 验证 | HF-loadable;保留的张量字节 |
| GGUF | ✓ | 阵列嵌套>32 | 验证 | |
| 去buildinfo | ✓ | ✓>1 MiB | 验证 | 映射ELF剖面 |
| 扑扑/飞镖池 | ✓ | URI/令牌上限 | 验证 (预计) | |
| Erlang梁 | ✓ | 大块/原子 | 验证 | |
| EVM +固体元 | ✓ | ✓→4mib输入 | 验证 (方法) | |
| PCAP | ✓ | ✓tshark JSON >8 MiB | 验证 (tshark) | 没有鲨鱼的软跳 |
| NVIDIA PTX(文本) | ✓ | 进入洪水 | 基准只 | 不是REA gpu对象预算 |
| DEX / IL2CPP / bplist /。. Net / JVM / zip | ✓ | 特定于格式 | 专为 | 不支持APK签名保护 |
| 固件/ SPIR-V / CUDA fatbin / AMD GPU | - - - - - - | - - - - - - | 跳过 | 见上面的矩阵 |
基准(14个目标,内部估计)
npx bla-agents benchmark 运行一个 本地柜台橱窗:暴露分数; 估计 令牌/成本乘数,以及 测量 运行时等效。Token/$列是 内部评估 来自BLA的REA限制目录-它们是 不 与上面的经验REA过程测量相同(那些是具有实际错误字符串的字节级分析器故障)。 npm run verify:rea 是一个 只有固定漂移线束 绝不能被引用为保护证据;唯一权威的门是 npm run redteam:rea.
最近的本地运行(bla-agents) v1.4.0):总 ~ 612.5× 令牌? ~ 292.2× 成本? 14/14 runtime-exact。
| 目标 | 无保护(美国东部时间)。 | 保护(美国东部时间)。 | 令牌乘法(test .) | 运行时 |
|---|---|---|---|---|
DX-Ball音盘(.js) | 84/100·4,800 tok·0.20美元 | ·1350万tok·212.82美元·LIMITED | 2822.7× | 100% |
概念电子剪贴板(.asar) | 98/100·9,132托克·0.34美元 | ·2310万tok·358.28美元·LIMITED | 2532.3× | 100% |
| 企业许可证验证器 | 84/100·4,800 tok·0.20美元 | ·1350万tok·212.82美元·LIMITED | 2822.7× | 100% |
| WASM加密内核 | 81/100·4,800 tok·0.20美元 | 6/100·183万tok·30.23美元·LIMITED | 381.5× | 100% |
| 原生ELF64 (Rust/Go/Fuse/Dart) | 81/100·35222·0.73美元 | 2/100·372万tok·60.03美元·LIMITED | 105.6× | 100% |
| SQLite授权数据库 | ·10,568托克·0.29美元 | ·171万tok·28.39美元·LIMITED | 162.1× | 100% |
| 边缘AI安全传感器 | 81/100·4,800 tok·0.20美元 | 6/100·181万tok·29.90美元·LIMITED | 376.8× | 100% |
| Android敏捷 | 81/100·8,900 tok·0.34美元 | 7/100·279万tok·45.11美元·LIMITED | 313.2× | 100% |
| 苹果bplist | 81/100·6440托克·0.26美元 | ·136万tok·22.96美元·LIMITED | 211.8× | 100% |
| .NET管理的DLL | 81/100·8,900 tok·0.34美元 | ·245万tok·39.96美元·LIMITED | 274.8× | 100% |
| Erlang梁 | 81/100·8,900 tok·0.34美元 | ·386万tok·62.08美元·LIMITED | 433.2× | 100% |
| EVM solid元数据 | 81/100·6440托克·0.26美元 | 6/100·178万tok·29.40美元·LIMITED | 276.3× | 100% |
| libpcap捕获 | 81/100·4,800 tok·0.20美元 | 8/100·160万tok·26.58美元·LIMITED | 333.2× | 100% |
| NVIDIA PTX文本 | 81/100·4,800 tok·0.20美元 | 6/100·240万tok·39.29美元·LIMITED | 500.2× | 100% |
BLA是如何运作的
- 疲惫 -行程记录的REA上限(
primitive-candidates, ASAR报头字节,WASM接口表示,SQLite列求值,模型JSON/数组嵌套,Go buildinfo, BEAM块,PCAP tshark JSON, fuse哨兵,…)。 - 欺骗 -金丝雀凭证+系统诊断兔子洞跨Python/WASM/SQLite/models/DEX/IL2CPP/bplist/.NET/JVM/ZIP;诱饵IPC /飞地清单/ VLQ地图。
- 运行时警卫 -电子V1熔断器硬化;CDP/Frida/检查员检测在检查过程中返回合成遥测数据。
保护是格式原生的(不需要商业打包器/外部LLVM)。红线: 永远不要破坏受保护的程序行为,导出表面,二进制/段完整性或格式有效性。
项目配置默认值(P0)
- 基于种子 - BLA薄荷随机种子
.blarc/bla.config.json第一次使用时。遗留共享指纹(bla-shield-seed-v1,…)不再是默认值。 --llm-directives-高风险的法学硕士诱饵(假COPPA/医疗通知,两用模仿,带内AI聊天标记) 默认关闭;传递旗帜(或)llmDirectives: true/ MCPllm_directives)选择加入。--manifest- - - - - -.bla-manifest.json是一个 无符号 证明(不是ed25519签名),并且是 可选;默认情况下,它不会在客户工件旁边发布。模式:defense-manifest-v1.json.
常见问题解答
哪些代理可以使用BLA?
任何有本地MCP或 SKILL.md 工作流。 npx bla-agents setup 配置Claude Code, Cursor, Codex, Gemini CLI, Windsurf,谷歌Antigravity, OpenCode, VS Code和GitHub Copilot CLI。设置完成后,进行捆绑 blind-llm-agents 技能 是一键加固指南(bla_harden / bla harden .); MCP停留在执行层。
BLA会改变运行时输出吗?
不在热路径上。预算守卫位于$O(1)$ opaque谓词后面。每个基准测试目标针对未受保护的构建检查100%的输入/输出等效性。
我需要Ghidra、Hopper、IDA或Wabt来保护文件吗?
否。护盾内置于 bla-agents. Wabt/tshark/Node 24是可选的——它们会解锁 经验 红队探测(npm run redteam:rea),而不是保护本身。
BLA是为了攻击别人的软件吗?
否。看到 DISCLAIMER.md. 保护载荷在工件的逆向工程检查下激活 你 硬化。
文档
- DISCLAIMER.md -防御性使用,仅限自己的软件
- 安装和代理设置
- CLI和MCP合同
- 一键式座席防御(技能优先)
- Weave-decoy MCP
- 实证REA验证
blind-llm-agents技能- Counter-REA矩阵
- V1.4.0版本说明(暂存)
- 更新日志
通过以下方式报告安全问题 SECURITY.md.
贡献
问题和pr欢迎浏览 qybaihe / bla. 之前提交:
export PATH=$HOME/node22.23.4/bin:$PATH # or node24
npm run build && npm test && node dist/cli.js benchmark
npm run redteam:rea # authoritative (real REA)
# npm run verify:rea # drift harness only — NOT protection proof
社区/微信号
- 🎯 公共BLA CrackMe v6 (
challenge/v6/) - harden-native:一个节点库+ HTML面板+ WebAssembly核心,经过真实加固bla harden管道(bankrupt, LLM指令关闭,固定种子)。运行npm run crackme:v6 -- '<key>';SEAL.json仅发布摘要(git中没有明文键/标志)。 - Linux做(
linux.do) — 新的理想型社区