{"slug": "adversarial-defense-for-binaries-js-python-against-ai-reverse-engineering-agents", "title": "Adversarial defense for binaries/JS/Python against AI reverse-engineering agents", "summary": "The open-source Counter-REA Blue Defense MCP and CLI, released by the qybaihe/bla project, hardens software releases against AI reverse-engineering agents such as morluto/rea, autonomous decompilers and LLM recon pipelines, and was verified across 14 showcase benchmark targets. The tool auto-discovers build outputs including dist/, .asar, .wasm, .sqlite, .safetensors and native binaries, then runs an audit → protect → verify loop via `npx bla-agents harden .`, with the project claiming 300×–2,800× modeled token amplification against analyzer passes and 14/14 bundled benchmark targets passing input/output equivalence tests. The project states BLA is for defensive use only by software authors and security teams protecting their own intellectual property, and is installable from qybaihe/bla on GitHub or the `bla-agents` npm package.", "body_md": "**English** · [简体中文](https://github.com/qybaihe/bla/blob/main/docs/readme/README_zh.md) · [繁體中文](https://github.com/qybaihe/bla/blob/main/docs/readme/README_zh-TW.md) · [日本語](https://github.com/qybaihe/bla/blob/main/docs/readme/README_ja.md) · [한국어](https://github.com/qybaihe/bla/blob/main/docs/readme/README_ko.md) · [Türkçe](https://github.com/qybaihe/bla/blob/main/docs/readme/README_tr.md) · [Русский](https://github.com/qybaihe/bla/blob/main/docs/readme/README_ru.md) · [Tiếng Việt](https://github.com/qybaihe/bla/blob/main/docs/readme/README_vi.md) · [ไทย](https://github.com/qybaihe/bla/blob/main/docs/readme/README_th.md) · [Deutsch](https://github.com/qybaihe/bla/blob/main/docs/readme/README_de.md) · [Español](https://github.com/qybaihe/bla/blob/main/docs/readme/README_es.md) · [Français](https://github.com/qybaihe/bla/blob/main/docs/readme/README_fr.md) · [Українська](https://github.com/qybaihe/bla/blob/main/docs/readme/README_uk.md) · [Polski](https://github.com/qybaihe/bla/blob/main/docs/readme/README_pl.md) · [Português (Brasil)](https://github.com/qybaihe/bla/blob/main/docs/readme/README_pt-BR.md) · [العربية](https://github.com/qybaihe/bla/blob/main/docs/readme/README_ar.md) · [فارسی](https://github.com/qybaihe/bla/blob/main/docs/readme/README_fa.md) · [Bahasa Indonesia](https://github.com/qybaihe/bla/blob/main/docs/readme/README_id.md) · [Italiano](https://github.com/qybaihe/bla/blob/main/docs/readme/README_it.md) · [Ελληνικά](https://github.com/qybaihe/bla/blob/main/docs/readme/README_el.md) · [മലയാളം](https://github.com/qybaihe/bla/blob/main/docs/readme/README_ml.md) · [Roman Urdu](https://github.com/qybaihe/bla/blob/main/docs/readme/README_ur-Latn.md) · [Română](https://github.com/qybaihe/bla/blob/main/docs/readme/README_ro.md)\n\n**The open-source Counter-REA Blue Defense MCP & CLI that protects software releases against AI reverse-engineering agents (`morluto/rea`, autonomous decompilers, and LLM recon pipelines) — verified across 14 showcase benchmark targets.**\n\n[🌐 Official Website](https://bla.tools/) · [📖 Defense Guides](https://bla.tools/guides/) · [📊 Live Benchmarks](https://bla.tools/showcase/) · [🎯 CrackMe Arena](https://bla.tools/crackme/) · [🏢 Enterprise](https://bla.tools/enterprise/) · [⚖️ Disclaimer](https://github.com/qybaihe/bla/blob/main/DISCLAIMER.md)\n\n[Quick Start](#-30-second-quick-start) · [How It Works](#-how-bla-works-agent-driven-closed-loop) · [Empirical Results](#empirical-results-vs-real-rea) · [Format Coverage](#format-coverage) · [14-Target Benchmark](#benchmark-14-targets-internal-estimates) · [CrackMe Arena](#-red-vs-blue-crackme-arena) · [FAQ](#faq)\n\nImportant\n\n**Defensive Use Only:** BLA is engineered strictly for software authors and security teams protecting **their own** intellectual property and release artifacts. See [DISCLAIMER.md](https://github.com/qybaihe/bla/blob/main/DISCLAIMER.md).\nAlways install from official sources: [qybaihe/bla](https://github.com/qybaihe/bla) or [`npm i bla-agents`](https://www.npmjs.com/package/bla-agents).\n\n| 🔴 Without BLA AI reverse-engineering agents (`REA` + coding agents) unpack`.asar` archives, recover SourceMaps, trace IPC bridges, inspect`.wasm` /`.sqlite` /`.safetensors` , and clone core business logic in**seconds for ~$0.20** . | 🛡️ With BLA (`bla harden .` ) | ⚡ Runtime-Equivalent by Design Exhaustion graphs and decoy payloads sit behind **14/14 bundled benchmark targets** pass input/output equivalence tests (`bla verify` checks Counter-REA structural gates; run your project's test suite for custom artifacts). | \n\nEvery analyzer pass hits deterministic resource ceilings (`primitive-candidates > 256`, `ASAR > 16 MiB`, `WASM > Wabt cap`, `SQLite virtual trap`), follows realistic shadow state machines, and projects **300×–2,800× modeled token amplification** (`token-estimator.ts`).\n\nPoint BLA at any project or release directory. It auto-discovers build outputs (`dist/`, `build/`, `.asar`, `.wasm`, `.sqlite`, `.safetensors`, native binaries, Python/C/Rust/Go) and runs **audit → protect → verify**:\n\n```\n# Node.js ^22.23.4 or >=24.0.0 recommended\nnpx bla-agents harden .\n```\n\nRegister BLA once with your coding agent (**Claude Code, Cursor, Codex, Windsurf, Gemini CLI, GitHub Copilot CLI, VS Code, OpenCode, Antigravity**):\n\n```\nnpx bla-agents setup\n```\n\nThen simply prompt your coding agent:\n\n```\nHarden my software against REA\n```\n\nYour host agent automatically orchestrates BLA's MCP tools (`bla_weave_plan` → source-level logic weaving & string encryption → `bla_verify_weave` → `bla_harden` → `bla_verify`) to harden both your source architecture and compiled artifacts.\n\nProtect JS chunks, strip/replace SourceMaps with VLQ v3 honey maps, and shield `.wasm` assets automatically at bundle time:\n\n``` js\nimport { defineConfig } from \"vite\";\nimport { blaVitePlugin } from \"bla-agents/bundler\";\n\nexport default defineConfig({\n  plugins: [blaVitePlugin({ intensity: \"bankrupt\", enableHoneySourceMaps: true })],\n});\n```\n\nTraditional obfuscators only rename variables (`_0x1a2b`), which modern LLMs effortlessly summarize, or wrap binaries in heavy VM packers that break cross-platform builds and degrade performance.\n\n**BLA 3.x combines format-native deterministic shields with host-agent surgical source weaving:**\n\n``` php\nflowchart LR\n  subgraph S1[\"1 · Recon & Plan\"]\n    A[\"bla_audit / bla_lint\"] --> B[\"bla_weave_plan\"]\n  end\n  subgraph S2[\"2 · Agent Source Surgery\"]\n    B --> C[\"bla_encrypt_strings\\n(AST Span XOR + Keystream)\"]\n    C --> D[\"bla_bind_scope\\n(Multi-Site State Entanglement)\"]\n    D --> E[\"bla_verify_weave\"]\n  end\n  subgraph S3[\"3 · Artifact Shielding\"]\n    E --> F[\"bla_harden / bla_defend\\n(19+ Format Shields + Self-Seal)\"]\n  end\n  subgraph S4[\"4 · Counter-REA Gate\"]\n    F --> G[\"bla_verify\\n(Structural Counter-REA Checks Only)\"]\n  end\n```\n\n| Defense Pillar | Mechanism | Effect on AI Reverse-Engineering Agents | \n|---|---|---|\n| **1. Poison (Deception)** | Plants format-valid canaries, SGX/TPM2/Secure Enclave delegation manifests, VLQ v3 honey SourceMaps, and plausible shadow state machines. | Forces LLM agents to split context across conflicting hypotheses and chase synthetic rabbit holes. | \n| **2. Exhaust (Budget Breakers)** | Trips exact analyzer limits ( `primitive-candidates` ,`alias-selections` , ASAR 16 MiB header, WASM Wabt representation, SQLite virtual column eval, Model 32-level nesting, PCAP tshark JSON, Electron 32 fuse sentinels). | Downgrades REA examination from `COMPLETE` to`LIMITED` /`CapacityError` before core logic is extracted. | \n| **3. Entangle (Anti-Strip & Self-Seal)** | Binds sibling artifacts (JS ↔ WASM ↔ Native sidecars) via runtime SHA-256 digests ( `--self-seal` ,`--sidecar-entangle` ) and multi-site caller scope folding (`bla_bind_scope` ). | Prevents red-team agents from stripping decoys, nop-patching single-point checks, or calling exported functions as offline oracles. | \n| **4. Runtime Truman Show** | Hardens Electron V1 Fuses ( `RunAsNode=0` ,`Inspect=0` ) and detects CDP / Node Inspector / Frida / WebDriver attachment (`runtime-shield.ts` ). | Serves believable synthetic telemetry during live debugging while keeping normal user execution untouched. | \n\nThese numbers come from running **real `morluto/rea`** against BLA-hardened samples on commodity hardware (` npm run redteam:rea`). Full machine-readable report: [` docs/redteam/empirical-rea-validation.md`](https://github.com/qybaihe/bla/blob/main/docs/redteam/empirical-rea-validation.md) / [`.json`](https://github.com/qybaihe/bla/blob/main/docs/redteam/empirical-rea-validation.json).\n\n**How to read this:** “Empirically verified” means the live REA analyzer path returned the listed budget / capacity / redaction failure in this environment. It is **not** a claim about Ghidra/Frida/LLDB/Rizin/JADX sessions we did not run here.\n\nRecorded under **Node v24.22.1** with optional **Wabt 1.0.42** + **tshark 4.4** when noted. Soft-skips keep Node 22 / CI green when external native tools are absent.\n\n| Format | Before → After | REA Outcome After BLA | Exact REA Budget / Error Triggered | \n|---|---|---|---|\n| **Go buildinfo** | 50 KiB → 1.16 MiB | ❌ Capacity error | `MAX_BUILD_INFO_BYTES` (1 MiB) —*Go build-info string length exceeds the 1 MiB limit* | \n| **Erlang BEAM** | 84 B → 262 KiB | ❌ Capacity error | `max_chunks` —*BEAM form exceeds the 64-chunk budget* | \n| **EVM bytecode** | 16 B → **4.00 MiB** |  | `EVM_INTERFACE_LIMITS.inputBytes` (4 MiB) | \n| **PCAP** | 24 B → 1.29 MiB | ❌ Budget rejected | `TSHARK_JSON_MAX_BYTES` (>8 MiB) →`AnalysisResourceConstraintError` | \n| **Electron ASAR** | 607 B → **16.9 MiB** | ❌ Capacity error | `DEFAULT_ASAR_MAX_HEADER_BYTES` (16 MiB) | \n| **WASM + Wabt** | 54 B → **6.56 MiB** · 251 exports | `ifaceState=partial` | `WASM_INTERFACE_REPRESENTATION_BYTES` —*Typed WASM interface decoding exceeds WABT budget* | \n| **SQLite** (Node 24) | 12 KiB → 56 KiB | ❌ Redaction / eval trap | `SqliteColumnEvaluationFailure` — unknown`enclave_unseal_payload()` on virtual trap columns | \n| **JavaScript** | 761 B → 116 KiB | ❌ Budget rejected | `alias-selections` +`getter-expansion` +`primitive-bytes` +`primitive-candidates` | \n| **Safetensors** | 128 B → 10.1 KiB | ❌ Capacity error | `MODEL_JSON_NESTING` —*Safetensors JSON nesting exceeds 32 levels* (HF-loadable; tensors intact) | \n| **GGUF** | 24 B → 7.7 KiB | ❌ Capacity error | `MODEL_METADATA_NESTING` —*GGUF metadata nesting exceeds 32 array frames* | \n| **Electron fuses** | 50 KiB → 1.16 MiB | ❌ Budget rejected | `ELECTRON_FUSE_LIMITS.maximumSentinelsPerSlice` (>32) | \n| **Flutter pool** | 50 KiB → 1.16 MiB |  | `MAX_POOL_URIS` /`MAX_POOL_TOKENS` (REA truncates with “at least N”) | \n\nReproduce locally:\n\n```\nexport REA_WABT_BIN_DIRECTORY=$HOME/opt/wabt-1.0.42/bin   # optional\nnpm run build && npm run redteam:rea\n```\n\n## **Designed-for paths not empirically run on this machine (click to expand)**\n\nThese shields exist in-tree and are covered by unit tests / catalog drift checks, but the matching REA path requires external native debuggers/decompilers not installed on the CI runner:\n\n| Area | Why Unverified Here | \n|---|---|\n| Ghidra / native decompilation depth | Requires a local Ghidra install + REA bridge | \n| Frida / LLDB / GDB / Rizin live sessions | Requires those debuggers + device/process attach | \n| JADX / full Android APK pipeline | APK resigning unsupported; standalone DEX shield is in-tree | \n| **Firmware** containers | Staging/extraction budgets exist; no honest E2E without firmware corpora | \n| **SPIR-V / CUDA fatbinary / AMD GPU objects** | Need native GPU object decoders; **PTX text** is shielded in-tree | \n| EVMole in-process EVM decode | Not pathable in-process; EVM shield densifies to the 4 MiB input cap | \n\nAll 19+ format shields are built directly into `bla-agents` with zero external packer dependencies:\n\n| Format | Canary + Diagnostic | Exhaustion / Budget Trip | Empirically vs. REA | Notes | \n|---|---|---|---|---|\n| **JavaScript / TypeScript** | ✓ | ✓ semantic budgets | **verified** (in-process) | Babel AST; AST-safe string encryption; self-seal | \n| **Electron `.asar`** | ✓ | ✓ header 16 MiB | **verified** | IPC de-literalization + Pickle repackaging | \n| **Electron fuses** | ✓ | ✓ >32 sentinels | **verified** | V1 fuse hardening + sentinel flood | \n| **WebAssembly (`.wasm`)** | ✓ custom sections | ✓ export decoys → Wabt | **verified** (Wabt) | LEB128 parser; preserves `WebAssembly.validate` | \n| **SQLite (`.sqlite` / `.db`)** | ✓ honey + trap cols | ✓ column eval | **verified** (Node 24) | Magic-byte verified; supports `WITHOUT ROWID` | \n| **Safetensors (`.safetensors`)** | ✓ string metadata | ✓ JSON nesting >32 | **verified** | HuggingFace-loadable; tensor bytes preserved | \n| **GGUF (`.gguf`)** | ✓ | ✓ ARRAY nesting >32 | **verified** | Preserves model weights and KV tensors | \n| **Go buildinfo (ELF)** | ✓ | ✓ >1 MiB | **verified** | Mapped ELF section | \n| **Windows PE (`.exe` / `.dll`)** | ✓ | ✓ `.enclave` COFF section + fuses/rustc/Dart | **verified** | Mapped `.enclave` section, x86-64 ABI function islands, MSVC RTTI, CodeView RSDS PDB | \n| **Flutter / Dart pool** | ✓ | ✓ URI/token caps | **verified** (projected) | Snapshot magic & toolchain flood | \n| **Erlang BEAM (`.beam`)** | ✓ | ✓ chunks / atoms | **verified** | Exceeds 64-chunk budget | \n| **EVM + Solidity meta** | ✓ | ✓ → 4 MiB input | **verified** (approach) | CBOR metadata + bytecode densification | \n| **PCAP (`.pcap`)** | ✓ | ✓ tshark JSON >8 MiB | **verified** (tshark) | Synthetic packet + canary injection | \n| **Python (`.py` / `.pyc`)** | ✓ | ✓ | designed-for | CPython 3.7–3.14 marshal & AST support | \n| **NVIDIA PTX (`.ptx`)** | ✓ | entry flood | benchmark only | Kernel entry & canary flood | \n| **DEX / IL2CPP / bplist / .NET / JVM / ZIP** | ✓ | format-specific | designed-for | Recomputes DEX SHA-1 & Adler32 checksums | \n\nRun `npx bla-agents benchmark` to execute the 14-target showcase locally:\n\n```\nnpx bla-agents benchmark\n```\n\n**Note:** Token and USD columns below are **internal estimates** derived from BLA's catalog of REA limits to illustrate relative amplification across formats — for actual process-level REA errors, see the [Empirical Results](#empirical-results-vs-real-rea) table above.\n\n**Aggregate Showcase Result:** **~639.5×** token amplification · **~304.4×** cost amplification · **14/14 bundled showcase targets** passed runtime-equivalence checks. This result is limited to the benchmark fixtures.\n\n| Target Artifact | Unprotected Baseline (est.) | BLA Protected (est.) | Token Multiplier | Runtime Equivalence | \n|---|---|---|---|---|\n| **DX-Ball sound-pan (`.js`)** | 84/100 · 4,800 tok · $0.20 | 2/100 · 13.5M tok · $212.82 · `LIMITED` | **2,822.7×** | ✅ 100% | \n| **Notion Electron clipboard (`.asar`)** | 98/100 · 9,132 tok · $0.34 | 2/100 · 23.1M tok · $358.28 · `LIMITED` | **2,532.3×** | ✅ 100% | \n| **Enterprise license validator (`.ts`)** | 84/100 · 4,800 tok · $0.20 | 2/100 · 13.5M tok · $212.82 · `LIMITED` | **2,822.7×** | ✅ 100% | \n| **NVIDIA PTX compute kernel (`.ptx`)** | 81/100 · 4,800 tok · $0.20 | 6/100 · 2.40M tok · $39.29 · `LIMITED` | **500.2×** | ✅ 100% | \n| **Erlang BEAM module (`.beam`)** | 81/100 · 8,900 tok · $0.34 | 5/100 · 3.86M tok · $62.08 · `LIMITED` | **433.2×** | ✅ 100% | \n| **WASM crypto kernel (`.wasm`)** | 81/100 · 4,800 tok · $0.20 | 6/100 · 1.83M tok · $30.23 · `LIMITED` | **381.5×** | ✅ 100% | \n| **Edge AI Safetensors (`.safetensors`)** | 81/100 · 4,800 tok · $0.20 | 6/100 · 1.81M tok · $29.90 · `LIMITED` | **376.8×** | ✅ 100% | \n| **libpcap network capture (`.pcap`)** | 81/100 · 4,800 tok · $0.20 | 8/100 · 1.60M tok · $26.58 · `LIMITED` | **333.2×** | ✅ 100% | \n| **Android Dalvik bytecode (`.dex`)** | 81/100 · 8,900 tok · $0.34 | 7/100 · 2.79M tok · $45.11 · `LIMITED` | **313.2×** | ✅ 100% | \n| **EVM Solidity metadata (`.bin`)** | 81/100 · 6,440 tok · $0.26 | 6/100 · 1.78M tok · $29.40 · `LIMITED` | **276.3×** | ✅ 100% | \n| **.NET managed assembly (`.dll`)** | 81/100 · 8,900 tok · $0.34 | 6/100 · 2.45M tok · $39.96 · `LIMITED` | **274.8×** | ✅ 100% | \n| **Apple binary plist (`.plist`)** | 81/100 · 6,440 tok · $0.26 | 9/100 · 1.36M tok · $22.96 · `LIMITED` | **211.8×** | ✅ 100% | \n| **SQLite entitlement DB (`.sqlite`)** | 81/100 · 10,568 tok · $0.29 | 7/100 · 1.71M tok · $28.39 · `LIMITED` | **162.1×** | ✅ 100% | \n| **Native ELF64 (Rust/Go/Fuse/Dart)** | 81/100 · 35,222 tok · $0.73 | 2/100 · 3.72M tok · $60.03 · `LIMITED` | **105.6×** | ✅ 100% | \n\nTest your reverse-engineering agent against public BLA-hardened challenges (`SEAL.json` publishes SHA-256 digests only — no plaintext keys or flags in git):\n\n| Challenge | Architecture | Hardening Highlights | Try It Locally | \n|---|---|---|---|\n| **[CrackMe v6](https://github.com/qybaihe/bla/blob/main/challenge/v6/README.md)** | Node Vault + HTML Panel + WASM Core | `bankrupt` intensity, self-sealed sibling hashes, WASM export obfuscation | `npm run crackme:v6 -- '<key>'` | \n| **[CrackMe v7](https://github.com/qybaihe/bla/blob/main/challenge/v7/README.md)** | Polyglot Vault (JS + WASM + Rust + Go + C) | Cross-language state entanglement & multi-binary integrity gates | `npm run crackme:v7 -- '<key>'` | \n| **[CrackMe v8](https://github.com/qybaihe/bla/blob/main/challenge/v8/README.md)** | Aegis Split-Key Vault | AST-encrypted strings ( `bla_encrypt_strings` ) + caller scope binding (`bla_bind_scope` ) | `npm run crackme:v8 -- '<key>'` | \n| **[CrackMe v9](https://github.com/qybaihe/bla/blob/main/challenge/v9/README.md)** | Agent-Woven Entangled Vault | Full BLA 3.x closed-loop weave ( `weaveScore >= 70` ) + distributed anti-strip checks | `npm run crackme:v9 -- '<key>'` | \n\n- **Per-Project Random Seed** — BLA automatically generates and persists a unique cryptographic seed in`.blarc` /`bla.config.json` on first run so two projects never share decoy identifiers.\n- **Strict Packaging Lint Gates (`bla lint`)** — Refuses` bankrupt` hardening when plaintext`FLAG{...}` secrets, single-point integrity checks, or unbound exported verifiers remain in source.\n- **Opt-In `--llm-directives`** — Aggressive in-band prompt decoys are**off by default** ; pass`--llm-directives` (or`llmDirectives: true` ) to enable.\n- **Opt-In Signed Attestation (`--manifest`)** — Emit`.bla-manifest.json` with`--manifest` , sign with`--sign-manifest --manifest-key <pem>` , and verify both ed25519 signature and artifact SHA-256 via`bla verify-manifest <file> --public-key <pem>` .\n\n## **Which coding agents can use BLA?**\n\nAny coding agent supporting MCP or `SKILL.md` workflows. `npx bla-agents setup` auto-registers **Claude Code, Cursor, Codex, Gemini CLI, Windsurf, Google Antigravity, OpenCode, VS Code, and GitHub Copilot CLI**. After setup, the bundled [`blind-llm-agents` skill](https://github.com/qybaihe/bla/blob/main/.agents/skills/blind-llm-agents/SKILL.md) guides your agent through the closed-loop workflow (`bla_weave_plan` → source weave → `bla_harden` → `bla_verify`).\n\n## **Does BLA slow down my app or change runtime output?**\n\nNo on the hot path. Exhaustion graphs sit behind \n\n## **Do I need Ghidra, Hopper, IDA, or Wabt installed to protect files?**\n\nNo. All 19+ format shields are built into `bla-agents` in pure TypeScript/Node.js. External tools (`Wabt`, `tshark`) are only used if you run the optional live REA red-team suite (`npm run redteam:rea`).\n\n## **Can BLA be used to attack other people's software?**\n\nNo. BLA is strictly a **Blue Team defensive tool** that hardens **your own** build artifacts before release. See [DISCLAIMER.md](https://github.com/qybaihe/bla/blob/main/DISCLAIMER.md).\n\n- [⚖️ DISCLAIMER.md](https://github.com/qybaihe/bla/blob/main/DISCLAIMER.md) — Defensive use & own-software policy\n- [🚀 Installation & Agent Setup](https://github.com/qybaihe/bla/blob/main/docs/installation.md)\n- [🛠️ CLI & 31-Tool MCP Catalog](https://github.com/qybaihe/bla/blob/main/docs/cli-and-mcp.md)\n- [🤖 One-Click Agent Defense (Skill-First)](https://github.com/qybaihe/bla/blob/main/docs/one-click-agent-defense.md)\n- [🧬 Weave-Decoy & Source Surgery MCP](https://github.com/qybaihe/bla/blob/main/docs/weave-decoy-mcp.md)\n- [🔬 Empirical REA Validation Report](https://github.com/qybaihe/bla/blob/main/docs/redteam/empirical-rea-validation.md)\n- [📋 Counter-REA Budget Matrix](https://github.com/qybaihe/bla/blob/main/.agents/skills/blind-llm-agents/references/counter-rea-matrix.md)\n- [📝 CHANGELOG](https://github.com/qybaihe/bla/blob/main/CHANGELOG.md) ·[🛡️ SECURITY.md](https://github.com/qybaihe/bla/blob/main/SECURITY.md)\n\nIssues and PRs are welcome at [qybaihe/bla](https://github.com/qybaihe/bla). Before submitting a PR:\n\n```\nnpm run build && npm test && node dist/cli.js benchmark\nnode scripts/verify-website.mjs\n```\n\n[Star History](https://www.star-history.com/?repos=qybaihe%2Fbla&type=date&legend=top-left) draws the GitHub star growth for [`qybaihe/bla`](https://github.com/qybaihe/bla). The chart image is cached for about a day and is not a per-second count. Select it to open the full history.", "url": "https://wpnews.pro/news/adversarial-defense-for-binaries-js-python-against-ai-reverse-engineering-agents", "canonical_source": "https://github.com/qybaihe/bla", "published_at": "2026-11-12 10:40:30+00:00", "updated_at": "2026-11-12 10:53:17.197351+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-safety"], "entities": ["qybaihe/bla", "Counter-REA Blue Defense", "morluto/rea", "bla-agents", "npm", "Claude Code", "Cursor", "GitHub Copilot CLI"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/adversarial-defense-for-binaries-js-python-against-ai-reverse-engineering-agents", "markdown": "https://wpnews.pro/news/adversarial-defense-for-binaries-js-python-against-ai-reverse-engineering-agents.md", "text": "https://wpnews.pro/news/adversarial-defense-for-binaries-js-python-against-ai-reverse-engineering-agents.txt", "jsonld": "https://wpnews.pro/news/adversarial-defense-for-binaries-js-python-against-ai-reverse-engineering-agents.jsonld"}}