Kiến trúc REA: Runtime dịch ngược nhị phân và giao thức MCP
Tóm tắt nhanh
REA (Reverse Engineer Anything) cung cấp runtime cục bộ kết nối AI agent và kỹ sư bảo mật với disassembler native, bộ tái cấu trúc ứng dụng và đầu dò runtime qua Model Context Protocol (MCP) và CLI. Framework tích hợp engine native (Hopper, Ghidra Headless, IDA Pro) cùng parser tĩnh cho Electron ASAR, assembly .NET PE/CLI, Go và WebAssembly. Mọi tác vụ tạo bản ghi Evidence gán mã băm SHA-256, khai báo facet coverage rõ ràng và ranh giới bất định có kiểm soát, ngăn AI agent ảo giác mã nguồn dịch ngược.
Tích hợp AI agent tự hành vào quy trình dịch ngược gặp trở ngại lớn về giao tiếp kỹ thuật. LLM tiêu chuẩn không thể trực tiếp đọc file Mach-O nhiều gigabyte, dò tìm bảng ký hiệu ELF bị tước bỏ hay bóc tách file Electron ASAR bị làm rối mã nếu thiếu công cụ trung gian.
Đưa mã assembly thô vào LLM bộc lộ các lỗi hệ thống:
- Mất ngữ cảnh trạng thái: Disassembler lưu trữ cơ sở dữ liệu phong phú (call graph, type hierarchy, CFG), nhưng luồng agent truyền thống tương tác qua pipe CLI tạm thời khiến lịch sử điều hướng bị xóa sạch giữa các truy vấn.
- Ảo giác mã dịch ngược: Thiếu bằng chứng ngữ nghĩa từ compiler, mô hình tự suy diễn hàm nguồn, gán bừa struct và tạo call path sai lệch để đáp ứng prompt.
- Tràn ngữ cảnh: Ứng dụng thực tế chứa hàng chục nghìn hàm con. Nạp toàn bộ module dịch ngược vào prompt làm cạn kiệt token và tăng chi phí vận hành.
[Luồng agent] ──(Dữ liệu terminal thô)──> [Pipe LLM phi trạng thái]
│
(Suy đoán thiếu căn cứ)│
│
▼
[File nhị phân mục tiêu] <───────────────── [Struct tự suy diễn sai]
========================= ĐỐI CHIẾU =========================
[Runtime MCP & CLI của REA]
│
├── Định tuyến phiên & Ghim mục tiêu (SessionProviderRouter)
├── Cầu nối native chuyên sâu (Hopper Python, Ghidra Headless, IDA)
├── Bộ phân tích ứng dụng chuyên biệt (.NET PE/CLI, Electron ASAR, Go)
└── Sổ cái bằng chứng mã hóa (Ràng buộc byte SHA-256 & Ẩn số tường minh)
│
▼
[Host Agent nhận bản ghi bằng chứng xác thực với phạm vi quan sát rõ ràng]
REA chuẩn hóa quy trình qua Model Context Protocol. Dự án phát hành theo giấy phép MIT License, xác minh tại LICENSE L1-L21. Trên npm với tên gói rea-agents v6.7.0, dự án cung cấp binary rea và rea-agents.
| Chiều so sánh | Dữ liệu disassembler thô | Runtime MCP của REA |
|---|---|---|
| Mô hình tương tác | Văn bản terminal không cấu trúc | Hợp đồng công cụ JSON định kiểu qua JSON Schema |
| Cơ sở chứng cứ | Giả định suy đoán của mô hình | Bản ghi Evidence mã hóa ràng buộc byte bằng SHA-256 |
| Bền vững phiên | Mất sau khi tiến trình dừng | Ghim phiên có trạng thái, hỗ trợ xuất nhập snapshot |
| Đa nền tảng | Một disassembler khóa theo OS | Hỗ trợ Mach-O/ELF/PE, Electron, .NET, Android và Web |
| Xử lý bất định | Bỏ sót ngầm và tự đoán | Bản đồ coverage, lưu ý giới hạn và ẩn số định kiểu |
Cơ chế cốt lõi: định tuyến phiên và sổ cái bằng chứng mã hóa
Trung tâm REA là điểm tiếp nhận kép điều phối giữa lệnh CLI một lần và phiên máy chủ MCP liên tục. Theo scripts/rea.mjs L1-L45, bộ điều phối xác định chạy CLI (Incur) hay khởi động MCP server qua stdio hoặc streamable HTTP (rea mcp --http).
Framework ghim định danh chuẩn tại src/identity.ts L1-L26 nhằm tránh sai lệch cấu hình client.
[Điểm tiếp nhận scripts/rea.mjs]
│
├── (Mặc định / Cờ MCP) ──> [src/server/createServer.ts]
│ │
│ ├── Bộ xử lý giao thức Stdio
│ └── Trình lắng nghe Streamable HTTP
│
└── (Phân phối lệnh con) ──> [src/cli.ts]
│
└── Tác vụ CLI một lần (Incur)
Khi mở file mục tiêu, REA tạo BinarySession do SessionProviderRouter quản lý. Router xếp hạng ứng viên từ AnalysisProviderRegistry theo thứ tự tất định. Provider được ghim bất biến với mục tiêu suốt vòng đời phiên, tránh sai lệch cache.
MCP server khởi tạo kèm chỉ dẫn phân định rõ giữa khám phá ban đầu và phân tích hàm trọng tâm, xác minh tại src/server/createServer.ts L140-L155.
Mỗi thao tác tạo ra bản ghi Evidence bất biến chứa siêu dữ liệu nguồn gốc, định nghĩa tại src/domain/evidence.ts L40-L95:
evidence_id: Mã băm SHA-256 tính trên giá trị quan sát chuẩn hóa.subject: Định danh artifact, gồm mã SHA-256, định dạng (mach-o,elf,pe,asar, …) và kiến trúc tập lệnh.authority: Thẩm quyền nguồn gốc (shipped-artifact,controlled-replay,historical-reference,analyst-inference).limitations&unknowns: Liệt kê khía cạnh chưa quan sát, nhánh duyệt bị cắt tỉa hoặc symbol bị thiếu.
Cầu nối đa engine: dịch ngược native và tái cấu trúc ứng dụng
REA không viết lại backend decompiler mà triển khai bridge độc lập điều khiển công cụ công nghiệp, áp đặt hạn mức bộ nhớ và cô lập tiến trình.
Cầu nối disassembler native chuyên sâu
Với file native đã biên dịch, REA kết nối qua các kênh IPC có xác thực:
- Cầu nối Hopper: Tại bridge/hopper_bridge.py L1-L45, REA kết nối Hopper qua Unix domain socket bằng token HMAC (
REA_TOKEN). Lệnh chạy trên luồng Python riêng của Hopper nhằm tránh deadlock runloop Cocoa. - Cầu nối Ghidra Headless: Tại bridge/ghidra/ReaGhidraBridge.java L1-L45, script headless chạy phân tích qua Unix socket trên POSIX hoặc TCP loopback trên Windows, stream CFG, xrefs và decompiler dossier.
- Tích hợp IDA Pro: Qua
ida-pro-mcphỗ trợ phân tích database headless hoặc đồng bộ trực tiếp với GUI đang mở.
Bộ tái cấu trúc ứng dụng gọn nhẹ
Nhiều ứng dụng hiện đại không cần decompilation nhị phân toàn diện. REA cung cấp parser chuyên biệt trích xuất kiến trúc mà không chạy mã đích:
- Tái cấu trúc Electron và JavaScript: Xác minh tại src/application/javascript/JavaScriptArtifactReconstruction.ts L1-L45, REA trích xuất file ASAR, dựng hình chiếu AST module, ánh xạ source map và tóm tắt ranh giới IPC Electron hoàn toàn offline.
- Phân tích assembly .NET: Xác minh tại src/dotnet/ManagedArtifactInspector.ts L1-L45, REA đọc header metadata PE/CLI, bảng kiểu và lệnh CIL mà không cần nạp vào CLR hay chạy file native.
- Đọc tiêu đề Go và Rust: Bóc tách build flags, module và bản compiler trực tiếp từ file thực thi mà không cần compiler ngoài.
Hướng dẫn cài đặt và kiểm tra mục tiêu với REA
Dành ba mươi phần trăm nội dung cho thực hành kỹ thuật, lập trình viên có thể cài đặt REA toàn hệ thống hoặc kết nối vào trợ lý code.
Điều kiện tiên quyết và cài đặt runtime
REA yêu cầu Node.js ^22.19.0 || ^24.11.0 || >=26.0.0, xác minh tại package.json L30-L36. Node 23 và 25 không hỗ trợ. Trên Linux, kiểm tra quyền tiến trình cần lệnh ps chuẩn procps trên PATH.
Cài đặt REA toàn hệ thống qua npm:
npm install --global rea-agents
rea --helpCấu hình MCP cho agent bằng setup tương tác tự động kiểm tra config, tạo backup và cài skill, xác minh tại src/cli/setupCommands.ts L20-L65:
npx rea-agents setupKiểm tra độ sẵn sàng môi trường qua lệnh doctor:
rea doctorPhân tích gói ASAR của ứng dụng Electron
Phân tích ứng dụng Electron không cần giải nén thủ công:
rea analyze-javascript-application /Applications/TargetApp.app/Contents/Resources/app.asar --json > app-evidence.jsonVì đồ thị phân tích có thể nặng hàng trăm megabyte, trích xuất view tóm tắt:
echo '{"source": {"kind": "evidence-file", "path": "app-evidence.json"}, "view": {"kind": "summary"}}' > app-view.json
rea inspect-analysis-view app-view.jsonDịch ngược hàm native qua CLI
Kiểm tra hàm nhị phân qua Hopper hoặc Ghidra cài sẵn:
rea analyze_function /usr/local/bin/sample_binary --procedure _main --jsonKết quả trả về JSON chứa assembly chuẩn xác, mã giả decompiled, caller/callee và mã băm bằng chứng SHA-256.
Ranh giới bảo mật, kiểm soát tài nguyên và đánh đổi vận hành
Cấp quyền dịch ngược cho AI agent mang lại lợi ích lớn nhưng đòi hỏi ranh giới an toàn nghiêm ngặt.
Cơ chế sandbox và giám sát tiến trình
REA cô lập tiến trình decompiler trong process group riêng. Helper (phân tích source, giải mã source-map, HAR) chạy dưới ngân sách RAM kiểm soát. Trên Windows, worker chạy trong Job Object có hạn mức commit nghiêm ngặt. REA không đòi hỏi quyền root; mọi thao tác dùng quyền user thường.
Ranh giới tính chất và chống ảo giác
Framework bác bỏ cam kết bảo mật hoặc hiệu năng tuyệt đối:
- Không đảm bảo thực thi tuyệt đối: REA xác minh call path và instruction flow tĩnh; không khẳng định đường dẫn tĩnh chắc chắn chạy được tại runtime khi có ASLR hoặc anti-debugging.
- So sánh văn bản chuẩn xác: Lệnh
compare_functionsđánh giá text nguyên bản và kích thước block CFG. Dời nhãn hay tái phân bổ thanh ghi là khác biệt văn bản, không phải thay đổi ngữ nghĩa. - Bản quyền công cụ: REA không crack hay cung cấp license key. Người dùng tự chuẩn bị bản quyền khi dùng IDA Pro, Hopper hay JEB.
Đánh giá tổng kết và lộ trình ứng dụng
REA mang lại lớp trừu tượng kiến trúc giá trị khi kiểm thử file nhị phân độc quyền, đánh giá thư viện bên thứ ba hoặc tìm kiếm lỗ hổng. Bằng cách gắn quy trình suy luận của agent vào bản ghi Evidence có mã băm toàn vẹn và bridge decompiler có kiểm chứng, framework loại bỏ hoàn toàn phỏng đoán sai lệch.
Khuyến nghị ứng dụng:
- Tiếp cận từng bước: Dùng lệnh nhẹ qua CLI (
rea inspect-artifactvàrea inspect-managed-artifact) trước khi chạy decompilation nặng. - Chuẩn hóa bằng chứng MCP: Lưu mã băm
evidence_idkèm báo cáo audit để duy trì nguồn gốc mã hóa qua cổng CI/CD. - Đóng góp cộng đồng: Xem hướng dẫn tại rea.tools và báo cáo vấn đề qua GitHub Issues.








