REA: Reverse Engineer Anything — đánh giá công cụ giúp AI mổ xẻ ứng dụng

Mở đầu: REA là gì?

Khi bạn dùng một app và tự hỏi “tính năng này hoạt động thế nào?”, bạn thường không có mã nguồn — chỉ có file đã đóng gói, gọi là binary (file nhị phân: đã biên dịch thành mã máy, không đọc được bằng trình soạn thảo). Việc “mổ xẻ” file đó để lần lại cách hoạt động gọi là reverse engineering (kỹ thuật đảo ngược). Trước đây đây là việc của chuyên gia bảo mật: đọc hàng nghìn dòng hợp ngữ và suy đoán từng bước.

REA (Reverse Engineer Anything) gói toàn bộ đó thành công cụ cho trợ lý AI. Nó cài vào agent của bạn qua MCP server. MCP (Model Context Protocol) là giao tiếp chuẩn để nối công cụ bên ngoài với AI — cứ hiểu như cắm phích thêm một bộ đồ nghề cho trợ lý. Sau khi cài, bạn chỉ cần hỏi bình thường: “Tìm hiểu tính năng tìm kiếm trong app Notes, cho tôi bằng chứng, rồi viết phiên bản tương tự cho dự án của tôi”. AI sẽ tự gọi công cụ của REA để mở app, đọc bên trong, và giải thích kèm bằng chứng.

Dự án mã nguồn mở với giấy phép MIT (giấy phép tự do: được dùng, sửa, kể cả thương mại). Phân tích chạy hoàn toàn trên máy của bạn — app không được tải đi đâu. Lưu ý của chính dự án: chỉ tải từ ba nguồn chính thức — GitHub morluto/rea, website rea.tools, và npm package rea-agents — vì đã xuất hiện bản sao chép giả mạo.

REA đọc được những gì?

  • App native (app được biên dịch thành file chạy, ví dụ .exe trên Windows hoặc ELF trên Linux, file .app trên macOS): trả về mã giả (pseudocode — code dạng gần ngôn ngữ bậc cao, dễ đọc hơn mã máy), hợp ngữ, sơ đồ gọi hàm. Cần có sẵn một công cụ phân tích: Ghidra (miễn phí, của NSA), Hopper (miễn phí bản demo, trả tiền bản full) hoặc IDA Pro (trả phí, phải tự có license).
  • App JavaScript / Electron (như Discord, Notion, VS Code — app có giao diện viết bằng web, đóng trong “vỏ” Electron): đọc thấy các module, đường IPC (inter-process communication — kênh để hai phần của app nói chuyện với nhau), và chỗ nào app gọi thư viện native.
  • App Android (APK): giải mã manifest (bản kê khai quyền và thành phần), decompile class (tái tạo lại code từ bytecode), kết nối thẳng vào điện thoại qua ADB (Android Debug Bridge — kênh điều khiển thiết bị Android dành cho developer) để đọc log, chụp màn hình, lấy file.
  • Lưu lượng mạng: phân tích file HAR, SAZ hoặc pcap (file ghi lại các gói tin đi qua mạng — giống bản ghi hình camera của internet), đọc được các HTTP request, domain truy cập, phân bố protocol.
  • Các định dạng khác: website (qua trình duyệt), SQLite database, firmware router và thiết bị IoT, bytecode của hợp đồng thông minh Ethereum (EVM), WASM, crash dump Linux, tín hiệu từ máy đo logic (sigrok).

Điểm đáng quý nhất của thiết kế: mọi kết luận REA trả về đều kèm evidence (bằng chứng cụ thể — đoạn code, đoạn byte) và limitations (giới hạn — những gì chưa chắc chắn). AI không được không được đưa kết luận tùy tiện — phải kèm bằng chứng.

Chứng minh bằng case thật

Website dự án có ba case nghiên cứu đã kiểm chứng:

  • Game cũ DX-Ball: đảo ngược công thức tính vị trí âm thanh stereo từ bản x86 cũ, dựng lại bằng C. Bản dựng lại khớp 63 byte của hàm gốc và pass đủ 3.205 test-case. Độ chính xác từng byte là mức rất khó đạt được khi khôi phục một hàm cũ.
  • Notion: truy vết hành trình clipboard từ giao diện qua preload và IPC xuống main process, giải thích cơ chế rich-text clipboard.
  • Game PC-98 TH04 (DOS 16-bit): khôi phục thuật toán tính góc đạn, so sánh code dựng lại với output của compiler cổ.

Ứng dụng thực tế — ai nên dùng, dùng làm gì

1. Dev muốn “giật” ý tưởng hoặc làm integration. App X có một tính năng hay, bạn muốn nhái lại nó, nhưng không có source — thường thì phải mò UI bằng tay. Với REA: agent giải thích cách tính năng hoạt động, dùng API nào, dữ liệu đi đâu, rồi viết phiên bản tương tự theo đúng thiết kế thật. Tiết kiệm rất nhiều thời gian mò mẫm và đoán.

2. Security researcher / pentester. Phân tích app cần audit bảo mật, mô tả rõ ràng hành vi của app cho báo cáo. Đây là nhóm chính phục vụ của công cụ.

3. Quản trị hệ thống / devops. App của nhà cung cấp bán cho công ty bạn, vendor không tiết lộ source — agent xem nó thực sự gọi domain nào, ghi file ở đâu, đòi hỏi quyền gì. Nhìn được data flow thật — để quyết định có nên cài trên máy thật của công ty hay không.

4. Developer nhận app từ đối tác / kiểm tra firmware. Nhận một APK từ bên thứ ba, bạn muốn một bản trình bày nhanh, an toàn trước khi mở trên máy thật. Hoặc có một router IoT lạ, bạn muốn xem firmware bên trong làm gì — firmware analysis có sẵn ngay.

Những ai không nên dùng

  • Người chưa hiểu các khái niệm kỹ thuật cơ bản (assembly, IPC, binary format). AI giải thích được, nhưng bạn vẫn phải hiểu kết quả để sử dụng. REA không phải công cụ “một nút hiểu hết app” — chất lượng phân tích phụ thuộc người cầm nó.
  • Người muốn bypass DRM, mức xác thực giấy phép, khối gỡ DRM: REA chính thức từ chối — việc này vi phạm pháp luật và giấy phép của dự án.
  • Doanh nghiệp có hợp đồng cấm reverse engineering: đọc kỹ điều khoản trước khi phân tích app của đối tác. Nhiều EULA ghi rõ là cấm.

Cài đặt thực tế

Cần Node.js 22 trở lên, rồi một dòng lệnh duy nhất:

npx rea-agents setup

Chọn agent (Claude Code, Codex, Cursor…), duyệt các thay đổi cấu hình mà nó đề xuất (tự động backup file config gốc), rồi restart agent. Kinh nghiệm thực tế:

  • Nếu chỉ phân tích JavaScript/Electron — nhóm nhu cầu phổ thông nhất — không cần cài thêm gì nữa, phân tích chạy ngay sau khi setup.
  • Phân tích app native: cài sẵn Ghidra (khuyên dùng đầu tiên, miễn phí) hoặc Hopper / IDA Pro nếu bạn có license. REA không cấp hay mở khóa license — bạn phải tự tuân thủ điều kiện của nhà cung cấp.
  • Kiểm tra version Node trước khi setup: REA cần 22.19+ / 24.11+ / 26.
  • Chi phí thật của bạn là API token của model AI chạy phân tích — một phiên Claude Code/OpenCode bình thường, và không tốn thêm.

Điểm trừ và rủi ro cần biết

  • Số sao trên GitHub rất lớn khó tin (hơn 250.000 sau ~6 tháng) — thuộc nhóm dự án trending nhanh nhất. Code-base nghiêm túc, release đều, nhưng bạn vẫn nên tự kiểm chứng vì sao.
  • Bản copy giả mạo: chỉ cài đúng 3 nguồn chính thức, không cài theo link trong video hướng dẫn bên ngoài.
  • Công cụ dual-use (dùng tốt lẫn xấu): agent sẽ được cấp quyền mạnh để mổ xẻ binary trên máy bạn. Chỉ cài trên máy chính, quản lý chặt.
  • Tuỳ thuộc công cụ ngoài: khi phân tích native, khả năng hỗ trợ thay đổi theo từng công cụ (Hopper/Ghidra/IDA). Phân tích binary lớn có thể cần tăng thời gian chờ qua biến môi trường (biến môi trường `REA_GHIDRA_STARTUP_TIMEOUT_MS`). Linux cần package `procps`.

Kết luận

REA là ví dụ tốt cho thế hệ công cụ “AI làm nhiệm vụ phức tạp”: việc từng cần một nhóm chuyên gia một tuần, giờ có thể làm trong một buổi chiều với trợ lý AI — bằng chứng cụ thể, mỗi kết luận có mã nguồn để đối chiếu, docs thực sự đầy đủ. Nếu bạn làm security, dev móc app, hay quản trị hệ thống và muốn kiểm tra an toàn phần mềm bên ngoài — đáng thử. Nếu bạn chỉ là dev phổ thông, bắt đầu từ phân tích JavaScript/Electron trước, rồi nâng dần qua native.

Đánh giá: 9/10 cho security researcher và dev giàu kinh nghiệm; 7/10 cho dev phổ thông.

Repo: github.com/morluto/rea — MIT license. Bài viết tổng hợp từ README, tài liệu chính thức docs/ và showcase của dự án.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *