REA: Dịch Ngược Mọi Ứng Dụng Cùng AI Agent & MCP
REA (morluto/rea) kết nối AI coding agent qua giao thức MCP với Ghidra, Hopper và ASAR để dịch ngược mã nhị phân và ứng dụng Electron thành code kiểm chứng được.

Yêu cầu một AI coding agent tái tạo tính năng từ kho mã nguồn mở, nó làm xong sau vài phút. Nhưng yêu cầu agent đó bóc tách cơ chế tìm kiếm hay đồng bộ clipboard từ một phần mềm đóng mã nguồn, nó lập tức bế tắc. Không có mã nguồn gốc, mô hình chỉ biết đoán mò và bịa ra những hàm trông có vẻ đúng.
Ném file nhị phân thô vào ngữ cảnh của LLM cũng thất bại. Mã máy sau biên dịch sinh ra hàng triệu dòng hợp ngữ, làm tràn token và đầu độc khả năng suy luận bằng dữ liệu rác.
REA (Reverse Engineer Anything) giải quyết nút thắt này bằng kiến trúc dựa trên bằng chứng: bộ công cụ CLI và máy chủ MCP (giao thức kết nối AI với công cụ ngoài / open tool protocol for AI) mã nguồn mở, kết nối AI agent với Ghidra, Hopper và JADX để mổ xẻ mã nhị phân, ứng dụng Electron, gói .NET và APK Android ngay tại máy cục bộ.
Tóm tắt (TL;DR)
Hộp Trả Lời Nhanh (Google Search Featured Snippet):
- REA là gì? REA (
morluto/rea) là bộ công cụ dịch ngược mã nguồn (reverse engineering) định hướng AI agent và máy chủ MCP, cho phép các mô hình kiểm tra file nhị phân, gói Electron và hành vi ứng dụng tại máy cục bộ không cần mã nguồn ban đầu.- Tại sao REA quan trọng? Thay vì đoán mò, agent dùng hơn 126 công cụ MCP kết nối Ghidra, Hopper và JADX để xây dựng Sổ Cái Nghĩa Vụ Tái Thiết (Reconstruction Obligation Ledger), lưu vết bằng chứng và kiểm chứng mã sạch bằng các ca kiểm thử thực tế.
- Hiện trạng dự án: Dự án mã nguồn mở đạt Top 1 GitHub Trending tháng 10/2026. Phát hành qua
rea-agentstrên npm với cầu nối cho Ghidra, Hopper, IDA Pro, ASAR và ghi lại kịch bản trình duyệt.- Kho mã nguồn: morluto/rea (Giấy phép: MIT, Yêu cầu: Node.js 22+)
- Phù hợp nhất: Kỹ sư xây dựng phần mềm sạch tương thích ngược, chuyên gia bảo mật kiểm định thư viện đóng mã nguồn, và lập trình viên phân tích ứng dụng Electron hoặc desktop.
- Đánh đổi chính: Yêu cầu máy cục bộ cao. Ghidra khởi động nguội trên file lớn mất tới 330 giây, Hopper cần giấy phép thương mại khi thao tác sâu, và cầu nối Ghidra trên Windows vẫn đang thử nghiệm.
Bản đồ tư duy (Beginner Map)
Hãy hình dung luồng vận hành của REA bằng một ẩn dụ thực tế:
Ẩn dụ kiến trúc: Bắt LLM dịch ngược file nhị phân bằng chuỗi hex thô giống như yêu cầu kiến trúc sư vẽ lại tòa nhà từ xe tải chở cát vụn. REA là máy siêu âm kết cấu: định vị các cột chịu lực (đồ thị hàm, biểu tượng, chuỗi ký tự), đánh dấu liên kết dầm sàn (liên kết tham chiếu và kênh IPC), rồi giao cho kiến trúc sư bản danh sách kiểm tra trước khi đặt viên gạch đầu tiên.
Phần 1: Nền tảng (Cạm Bẫy Của Sự Bịa Đặt)
Điểm yếu lớn nhất của LLM trong dịch ngược mã là sự thiếu hụt điểm tựa thực nghiệm: mô hình sinh từ theo xác suất thống kê chứ không dựa trên kiểm chứng logic.
Khi được hỏi: “Đọc file Mach-O này và giải thích cơ chế kiểm tra bản quyền”, AI sẽ vẽ ra các thuật toán mã hóa phổ biến. Đoạn code tạo ra nhìn rất chuyên nghiệp theo chuẩn OpenSSL, nhưng hoàn toàn sai lệch so với luồng thực thi nhị phân thực tế.
REA xóa bỏ tình trạng này nhờ 3 nguyên tắc:
- Vận hành nội bộ (Local-First): File thực thi không bao giờ bị tải lên cloud. Mọi khâu dịch ngược và theo dõi thời gian chạy đều nằm trên máy cục bộ.
- Câu trả lời gắn chặt với bằng chứng: Mọi kết luận AI nhận được phải gắn với Gói Bằng Chứng (Evidence Bundle) bất biến, gồm offset byte, hợp ngữ gốc, liên kết tham chiếu (xrefs: danh sách các vị trí tham chiếu chéo trong mã) hoặc sơ đồ nguồn.
- Cắt lớp có cấu trúc (Structured Slicing): Thay vì ném 500.000 dòng hợp ngữ vào ngữ cảnh, REA cắt nhỏ mục tiêu nhị phân qua các truy vấn định hướng chính xác.
| Thuật ngữ | Ý nghĩa bỏ túi (3-6 từ) |
|---|---|
| Disassembler | Bộ dịch mã nhị phân sang hợp ngữ |
| Decompiler | Bộ dịch mã máy sang mã giả |
| xrefs (Cross-References) | Con trỏ liên kết mã với biểu tượng |
| ASAR | File nén đóng gói ứng dụng Electron |
| CIL | Mã trung gian của nền tảng .NET |
| Obligation Ledger | Danh mục nghĩa vụ hợp đồng cần hoàn trả |
Phần 2: Khảo sát (Kiến Trúc Vận Hành Dưới Nắp Ca-pô)
REA được đóng gói thành công cụ dòng lệnh Node.js và daemon MCP (rea-agents), chia thành 12 nhóm công cụ với 126 API định kiểu chặt chẽ.
1. Cài đặt 1 lệnh duy nhất
Cấp quyền cho AI agent dùng REA chỉ bằng một lệnh terminal:
# Đăng ký máy chủ REA MCP với Claude Code, Cursor, Codex hoặc Gemini CLI
npx -y rea-agents@latest setup
Trình cài đặt tự quét cấu hình agent trên máy, đăng ký endpoint MCP của REA, sao lưu dự phòng cài đặt cũ, và định tuyến đường dẫn tới Ghidra, Hopper hoặc IDA Pro.
Để phân tích gói Electron trực tiếp từ terminal mà không cần AI agent:
# Bóc tách cấu trúc ứng dụng Electron và xuất JSON chuẩn hóa
npx -y rea-agents@latest analyze-javascript-application /path/to/extracted/asar --json
2. Hệ sinh thái 12 nhóm công cụ
REA phân tách không gian làm việc thành các miền nghiệp vụ riêng:
direct(41 công cụ): Đọc hợp ngữ hàm, trích xuất byte thô, đặt bookmark và đổi tên định danh qua engine disassembler.enhanced(14 công cụ): Phân tích cấp cao gồmtrace_call_path,trace_feature,batch_decompilevà phân tích lớp Objective-C/Swift.electron(5 công cụ): Xác định ranh giới module, theo dõi kênh IPC (kênh giao tiếp giữa các tiến trình / inter-process communication) và cô lập script preload.application(13 công cụ): Khởi tạo sổ cái nghĩa vụ tái thiết, khôi phục source map và đánh giá tỷ lệ hoàn thành code.managed(7 công cụ): Đọc metadata và bytecode CIL của assembly .NET.android(5 công cụ): Tích hợp JADX không giao diện để dịch ngược APK và phân tích manifest.browser(12 công cụ): Điều khiển Chrome DevTools Protocol để ghi lại kịch bản mạng và phân tích file HAR.
3. Sổ Cái Nghĩa Vụ Tái Thiết (Reconstruction Obligation Ledger)
Điểm sáng tạo nhất của REA nằm ở Sổ Cái Nghĩa Vụ Tái Thiết:
// Thẩm định sổ cái nghĩa vụ trong tầng ứng dụng của REA
export const evaluateReconstructionObligationLedger = ({
candidates,
bundle,
manifest,
generationLimitations,
}: LedgerEvaluationOptions): ReconstructionObligationLedger => {
const context = createEvaluationContext(candidates, bundle, manifest);
const obligations = applyDependencyDiagnostics(
candidates.map((candidate) => evaluateObligation(candidate, context)),
context
);
return {
obligations,
coverage: obligationLedgerCoverage(obligations),
status: obligationLedgerStatus(obligations),
};
};
Cơ chế này hoạt động như kiểm toán kép:
- Ứng viên nghĩa vụ (Obligation Candidates): Mọi hàm, ranh giới trạng thái và cấu trúc dữ liệu phát hiện trong file nhị phân được ghi nhận là nghĩa vụ mà code tái thiết phải đáp ứng.
- Liên kết bằng chứng: Mỗi nghĩa vụ phải gắn với bằng chứng giải mã hoặc chuỗi byte cụ thể trước khi được đánh dấu hoàn tất.
- Phát hiện mâu thuẫn: Nếu mã giả mâu thuẫn với dữ liệu mạng thực tế lúc ứng dụng chạy, sổ cái lập tức phát cảnh báo chẩn đoán sai lệch.
- Điểm phủ sóng (Coverage): Agent nhận tỷ lệ phần trăm chính xác thể hiện mức độ tính năng đã được chứng minh bằng toán học thay vì suy đoán mơ hồ.
4. Ca kiểm chứng thực chiến
Kho mã nguồn của REA ghi lại ba nghiên cứu thực tế chứng minh hiệu quả:
- DX-Ball: Khôi phục thuật toán tính góc pan âm thanh từ hợp ngữ x86 32-bit sang C nguyên bản. Đoạn code tái tạo vượt qua 3.205 ca kiểm thử x86 gốc và khớp chính xác 100% từng byte mã máy của hàm dài 63 byte.
- Notion Desktop: Truy vết chính xác cầu nối clipboard từ API renderer giao diện, xuyên qua sandbox preload của Electron, tới kênh IPC của tiến trình nền chính.
- TH04: Khôi phục giải thuật tính góc đạn xòe từ hợp ngữ 16-bit PC-98 bằng Ghidra DOS analyzer, biên dịch lại thành C++ hiện đại khớp với đầu ra của trình biên dịch Borland C++ thời xưa.
Phần 3: Chẩn đoán (Góc Khuất & Cạm Bẫy Vận Hành)
REA là công cụ pháp y chuyên sâu, không phải đồ chơi cho các bài toán hời hợt. Khi đưa vào thực tế, bạn sẽ đối mặt với những rào cản vận hành cụ thể.
Hồ Sơ Ma Sát Vận Hành:
- Khởi động nguội Ghidra: Lên tới 330 giây với file nhị phân lớn
- Timeout mặc định của MCP: 60 giây (cần tăng cấu hình lên 360s)
- Tiêu hao bộ nhớ RAM: 2 GB đến 6 GB khi chạy disassembler nền
- Bất đối xứng OS: Hopper chạy trên macOS/Linux; Ghidra trên Windows vẫn là thử nghiệm
Tiếng nói từ cộng đồng nhà phát triển trên X (Twitter)
Sau khi REA đạt Top 1 GitHub Trending, cộng đồng trên X đã đưa ra những góc nhìn thực tế:
Các chuyên gia an toàn thông tin và hệ thống cũng đưa ra lưu ý quan trọng:
4 Cạm bẫy lớn cần lường trước:
- Xung đột timeout giữa MCP và Ghidra: Bắt tay MCP diễn ra dưới 1 giây. Nhưng mở file nhị phân 100 MB trên Ghidra kích hoạt tự động phân tích kéo dài hơn 300 giây. Các client MCP thông thường sẽ ngắt kết nối sau 60 giây. Bạn cần nâng timeout của client lên 360.000 ms để tránh lỗi sập ngay ở lệnh
binary_overviewđầu tiên. - Cạn kiệt cửa sổ ngữ cảnh: Chạy
batch_decompiletrên một module kích thước trung bình có thể xả 30.000 dòng mã giả C vào prompt, làm cạn kiệt token và khiến mô hình suy giảm tập trung. Hãy ép agent dùng các truy vấn phẫu thuật hẹp (trace_feature,trace_call_path). - Phụ thuộc môi trường cài đặt bên ngoài: REA không nhúng sẵn Ghidra hay Hopper vào gói npm. Bạn phải tự cài đặt bộ công cụ JDK (bộ công cụ phát triển ứng dụng Java / Java Development Kit) 21 trở lên cho Ghidra, hoặc mua bản quyền Hopper trên macOS.
- Ranh giới pháp lý: Dịch ngược phần mềm thương mại chịu sự điều chỉnh pháp lý chặt chẽ. REA phục vụ nghiên cứu tương thích mã sạch hợp pháp. Dùng công cụ để bẻ khóa, trích xuất tài nguyên bản quyền hoặc vượt qua DRM là hành vi vi phạm điều khoản sử dụng.
Phần 4: Giải pháp (Ma Trận Quyết Định)
Bảng đánh giá giúp bạn quyết định thời điểm đưa REA vào công việc:
| Tình huống dự án | Áp dụng REA ngay | Dùng cách làm thủ công hoặc mã nguồn mở |
|---|---|---|
| Phân tích Electron / Desktop | Cần tìm hiểu tuyến IPC ẩn và ranh giới bảo mật preload trong phần mềm đóng. | Mục tiêu đã có sẵn tài liệu REST API chuẩn hóa hoặc kho mã nguồn mở. |
| Phát triển tương thích mã sạch | Cần viết trình đọc file hoặc cầu nối giao thức tương thích ngược chuẩn đóng. | Dựng lại giao diện web thông thường dựa trên bản vẽ Figma hoặc ảnh chụp. |
| Kiểm định mã thư viện ngoài | Muốn xác minh file SDK đóng gói có chứa mã độc gửi dữ liệu ngầm hay không. | Quét lỗ hổng gói npm cơ bản thông qua Dependabot hoặc Snyk. |
| Cấu hình máy trạm | Máy tính từ 16 GB RAM trở lên, đã cấu hình sẵn môi trường Java và Ghidra. | Máy tính xách tay cấu hình yếu dưới 8 GB RAM và bộ nhớ hạn hẹp. |
Lời khuyên cuối (Final Take)
REA đưa công nghệ dịch ngược mã nguồn bằng AI từ trò đoán mò thành quy trình kỹ thuật có khả năng kiểm chứng: bằng cách kết nối các engine dịch ngược qua MCP và kiểm soát bằng sổ cái nghĩa vụ, AI không còn đoán mò cách phần mềm chạy mà chứng minh bằng code chính xác.
Thử thách thực hành (Student First Assignment)
- Cài đặt công cụ CLI:
npm install --global rea-agents. - Kiểm tra sức khỏe môi trường máy tính: chạy lệnh
rea doctor. - Giải nén một ứng dụng Electron hoặc file nén ASAR thử nghiệm bất kỳ.
- Chạy
rea analyze-javascript-application /path/to/extracted/app --jsonvà quan sát biểu đồ phụ thuộc module cùng các kênh sự kiện IPC được bóc tách.
Câu hỏi thường gặp (FAQ)
REA có gửi file nhị phân lên máy chủ đám mây không?
Không. REA chạy hoàn toàn cục bộ trên máy tính. Khâu phân tích, dịch ngược và theo dõi thời gian chạy đều diễn ra nội bộ. Chỉ có kết quả tóm tắt và bằng chứng trích xuất được gửi tới AI agent theo chính sách API của nhà cung cấp mô hình.
Có bắt buộc phải mua bản quyền Hopper hay IDA Pro không?
Không. REA hỗ trợ đầy đủ Ghidra hoàn toàn miễn phí và mã nguồn mở. Hopper và IDA Pro là các lựa chọn bổ trợ, nhưng bạn có thể hoàn thành toàn bộ quy trình chỉ với Ghidra.
REA có phân tích được mã JavaScript đã bị rút gọn không có source map không?
Có. REA tích hợp sẵn bộ phân tích JavaScript và Electron chuyên sâu, tự động dựng lại đồ thị phụ thuộc module, duyệt cây cú pháp AST (cây cú pháp code mà máy tính hiểu / abstract syntax tree) và vẽ sơ đồ giao tiếp IPC ngay cả khi code đã bị làm rối hoặc rút gọn.
Những AI agent nào tương thích tốt nhất với REA?
Mọi trợ lý AI hỗ trợ giao thức Model Context Protocol (MCP) cục bộ đều tương thích với REA. Lệnh thiết lập tự động npx rea-agents setup đã tích hợp cấu hình cho Claude Code, Cursor, Codex, Gemini CLI và Antigravity CLI.
Bài viết liên quan
- Developer Tools
PhotoCraft: Photoshop Mã Nguồn Mở Tái Sinh Bằng Rust, wgpu & MCP Cho Agent
PhotoCraft (storytold/photocraft) là bản tái sinh clean-room Photoshop bằng Rust: GPU wgpu, đọc ghi PSD nguyên bản và tích hợp MCP cho AI agent.
15 phút đọcĐọc tiếp → - AI & Agents
TypeSafe AI Là Gì: Cỗ Máy System 1 Trị Giá 40 Triệu USD & Jev Primitives
TypeSafe AI là gì? Khám phá cỗ máy System 1 trị giá 40 triệu USD từ cựu OpenAI: thay thế LLM sinh chữ bằng mô hình quyết định Jev có kiểu dữ liệu dưới 100ms.
13 phút đọcĐọc tiếp → - AI & Agents
Đeo kính X-quang cho app Android: Trích API, lật tung endpoint chỉ với 1 lệnh
Cách tôi dùng android-reverse-engineering-skill để soi API ẩn trong APK, không cần mã nguồn, không cần mò từng dòng code. Pentest, CTF, bug bounty đều xài được.
5 phút đọcĐọc tiếp → - AI & Agents
Pi Mono Giải Thích: Anti-Framework Cho AI Coding Agent
Pi Mono là gì? Phân tích monorepo mã nguồn mở của Mario Zechner (badlogic/pi-mono): bộ khung modular tự build AI coding agent với TypeScript extensions.
25 phút đọcĐọc tiếp →