REA: 110k sao GitHub, cho AI agent mổ xẻ app từ hành vi đến binary
REA kết nối Claude Code, Codex, Cursor... với bộ công cụ phân tích binary, Electron, .NET và website. Bài hướng dẫn cài, thử trên app của chính bạn và nêu những lưu ý pháp lý cần biết.
Bạn thấy một app có tính năng tìm kiếm mượt đến khó tin và tự hỏi nó làm kiểu gì. Bạn không có mã nguồn, cũng chưa chắc đủ kinh nghiệm để mở trình disassembler lên đọc assembly.
Giờ bạn có thể gõ cho agent một câu kiểu: "Hãy tìm hiểu tính năng search của app Notes, cho tôi xem bằng chứng, rồi xây một tính năng tương tự cho dự án của tôi."
Đó là kịch bản mà REA (Reverse Engineer Anything) nhắm tới, và là ví dụ nằm ngay trong README. Repo morluto/rea viết bằng TypeScript, hiện có hơn 110.000 sao trên GitHub và đang nằm trong danh sách trending.
Bài này giải thích REA làm gì, cách cài và thử trên app của chính bạn, những điểm README chưa làm rõ, và ranh giới pháp lý, đạo đức khi đụng vào reverse engineering (dịch ngược).
REA là gì, hoạt động ra sao
Theo nhóm phát triển, REA là một MCP server dành cho reverse engineering trên binary, ứng dụng và hành vi lúc chạy. MCP (Model Context Protocol) là chuẩn để agent AI gọi các công cụ bên ngoài. Hãy hình dung agent là một kỹ sư tò mò, còn REA là bộ đồ nghề kèm kính hiển vi anh ta được giao.
Luồng làm việc theo README:
Agent gọi REA qua MCP để kiểm tra mục tiêu và lần theo đoạn code liên quan.
REA trả về phát hiện kèm bằng chứng (evidence).
Agent dùng kết quả đó để hỏi tiếp, giải thích hành vi, hoặc viết và test một bản cài đặt.
Các lệnh CLI dùng chung workflow này, nên bạn có thể chạy trực tiếp từ terminal mà không cần agent.
Phân tích chạy cục bộ, và kết quả đi kèm cả bằng chứng lẫn giới hạn của từng kết luận. Đây là điểm đáng giá: bạn có thứ để kiểm chứng thay vì chỉ nghe agent "kể chuyện".
Nó phân tích được những gì
| Mục tiêu | REA trả về | Yêu cầu |
|---|---|---|
| Native binary | Pseudocode, assembly, strings, symbols, lời gọi và tham chiếu | Hopper, Ghidra hoặc IDA |
| JavaScript / Electron | Module, import, source map, route, IPC, quan hệ với native add-on | Node.js và npm |
| Website | Cấu trúc trang, script, quan sát network, ảnh chụp màn hình theo yêu cầu | Trình duyệt họ Chrome |
| Go binary | Phiên bản compiler nhúng, module, build settings | Có sẵn, không cần cài Go |
| WASM | Kiểm tra hợp lệ, section, import/export, WAT đã giải mã | WABT 1.0.42 do bạn tự cài |
README còn liệt kê ELF offline, bytecode EVM và crash Linux đã ghi lại. Các mục này chủ yếu dành cho người làm bảo mật và yêu cầu Linux x64. ELF offline và crash Linux cần thêm pwntools do bạn tự cài. Phần giới thiệu cũng nhắc tới .NET assembly.
Với phân tích native, REA dùng công cụ bạn đã có (Hopper, Ghidra hoặc IDA). Bước setup có thể cài Hopper nếu bạn đồng ý. Phân tích JavaScript tĩnh thì không cần engine native.
Cài đặt trong vài phút
Yêu cầu: Node.js 22.x (từ 22.19), 24.x (từ 24.11) hoặc 26 trở lên, cùng npm.
Bước 1. Chạy setup:
bash
npx rea-agents setup
Bước 2. Chọn agent bạn dùng, đọc kỹ các thay đổi được đề xuất rồi đồng ý. Setup thêm MCP server và hướng dẫn workflow tương ứng, đồng thời sao lưu cấu hình cũ. README liệt kê Claude Code, Codex, Cursor, Gemini CLI, Grok Build và một số agent khác.
Bước 3. Khởi động lại agent.
Muốn có lệnh rea dùng lâu dài:
bash
npm install --global rea-agents
rea --help
Cập nhật thì chạy rea update. Nếu dùng npx, chạy lại npx rea-agents@latest setup. README nhấn mạnh REA thay đổi nhanh và bản mới sửa lỗi thường xuyên, nên hãy cập nhật đều.
Thử trên app của chính bạn
Cách 1: nhờ agent. Sau khi khởi động lại, dùng prompt mẫu của README và thay bằng app, tính năng của bạn:
text
Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.
Tôi gợi ý bắt đầu nhẹ nhàng hơn: đừng yêu cầu "build" ngay, hãy xin agent giải thích và dẫn bằng chứng trước.
Cách 2: dùng terminal với app Electron. Nếu bạn có một app Electron đã giải nén (thư mục hoặc file ASAR), chạy:
bash
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
Thay đường dẫn bằng của bạn. Trên Windows, README lấy ví dụ "D:/apps/example". Kết quả gồm module, import, các ranh giới Electron và bằng chứng đi kèm.
Trong phần README tôi đọc được, cấu trúc chi tiết của file JSON chưa được mô tả, nên bạn sẽ cần tự chạy để xem. Hướng dẫn từng bước cho phân tích native nằm ở các trang riêng (CLI and Evidence, native analysis), không có trong phần giới thiệu.
Gợi ý mục tiêu an toàn để thử:
Một app Electron do chính bạn hoặc team bạn viết, xem agent có "đọc ra" đúng kiến trúc IPC không.
Website của bạn, để xem script nào được tải và request nào được gửi.
Một chương trình nhỏ bạn tự biên dịch, rồi so pseudocode với mã gốc mình đã biết. Cách này vừa giúp học, vừa kiểm tra độ chính xác của công cụ.
Ranh giới pháp lý và đạo đức
README mô tả rõ khả năng "xem tính năng hay rồi xây một bản cho dự án của bạn". Phần dưới là nhận định của tôi, không phải nội dung từ nhóm phát triển, và tôi không phải luật sư:
Hiểu khác với sao chép. Học ý tưởng, kiến trúc, cách tiếp cận thường khác với chép nguyên code hay tài sản của người khác. Hãy để agent mô tả hành vi rồi tự viết bản cài đặt của bạn, đừng bê nguyên đoạn code dịch ngược.
Đọc giấy phép và điều khoản sử dụng (EULA). Nhiều phần mềm cấm dịch ngược trong điều khoản. Quy định khác nhau theo quốc gia và hợp đồng, nên nếu dùng cho sản phẩm thương mại, hãy hỏi người có chuyên môn pháp lý.
Chỉ phân tích thứ bạn có quyền phân tích: phần mềm của bạn, phần mềm mã nguồn mở, hoặc khi có sự cho phép rõ ràng. Không dùng để vượt cơ chế bảo vệ bản quyền hay làm công cụ gian lận.
Cân nhắc dữ liệu gửi đi. README nói phân tích chạy cục bộ. Tuy vậy, nội dung agent đọc được có thể đi tiếp tới nhà cung cấp mô hình mà bạn cấu hình. Với app nội bộ hoặc nhạy cảm, hãy kiểm tra chính sách của agent bạn dùng.
Kiểm chứng kết quả. Bằng chứng và phần "giới hạn" trong kết quả của REA có mặt là để bạn đối chiếu. Một kết luận của AI chưa kiểm tra vẫn chỉ là giả thuyết.
Điểm cần lưu ý
Dự án thay đổi nhanh, nên lệnh và hành vi có thể khác sau vài bản phát hành.
Phần README tôi đọc được không nêu số liệu về độ chính xác hay tốc độ, nên hãy tự đánh giá trên mục tiêu của bạn.
Nhiều tính năng nâng cao có yêu cầu riêng (Linux x64, pwntools, WABT, Hopper/Ghidra/IDA), nên không phải mục tiêu nào cũng chạy được ngay trên máy bạn.
Kết
Theo nhận định của tôi, giá trị lớn nhất của REA là biến reverse engineering từ việc đòi hỏi nhiều năm kinh nghiệm thành một cuộc trò chuyện có dẫn chứng. Với lập trình viên Việt Nam, đây là cách học rất thực tế: lấy app của mình, hỏi "nó chạy bên trong thế nào", rồi đối chiếu với điều mình đã biết.
Hãy bắt đầu từ thứ thuộc về bạn, kiểm chứng từng kết luận, và giữ ranh giới rõ ràng khi chuyển sang app của người khác.