ts4m.dev
MỚI GÓC KHÁM PHÁ / 003

REA · REVERSE ENGINEER ANYTHING

Rea: Mở hộp đen.
Thấy điều
bên trong.

Phần mềm có nhiều chuyện để kể.
Rea giúp AI tìm được những dấu vết ấy.

Từ một ô tìm kiếm quen thuộc đến những dòng mã đã biên dịch. Cùng mở từng lớp, nối bằng chứng và hiểu một ứng dụng thực sự hoạt động thế nào.

14 phút đọc
ĐẶT CÂU HỎITÌM DẤU VẾTĐỐI CHIẾU BẰNG CHỨNGHIỂU & XÂY DỰNG
01 / MỘT CÂU HỎI RẤT DEV

“Ủa, cái này
làm kiểu gì ta?”

Rea là bộ công cụ reverse engineering dành cho AI agent, có thể dùng qua MCP hoặc dòng lệnh. Nó nối trợ lý của bạn với những công cụ kiểm tra ứng dụng, mã nhị phân và hành vi lúc chạy.

Bạn đưa ra câu hỏi. Rea cung cấp dấu vết từ mục tiêu phân tích. Agent dùng chúng để giải thích, hỏi tiếp hoặc viết một cách triển khai cho dự án của bạn. Điểm đáng quan tâm là đường đi từ câu trả lời quay về file, hàm hay quan sát đã tạo nên nó. [1]

MCP là giao thức để agent gọi công cụ bên ngoài. Reverse engineering là tìm hiểu cách một hệ thống hoạt động từ những gì đang có: file ứng dụng, binary, cấu trúc hoặc hành vi quan sát được.

Rea không biến mọi file thành mã nguồn gốc nguyên vẹn. Pseudocode, quan hệ module và bằng chứng là đầu vào để bạn tiếp tục hiểu, dựng lại và kiểm thử.

02 / PHÒNG SOI PHẦN MỀM

Một giao diện.
Ba lớp để hiểu.

Chạm vào từng lớp để theo dấu một chức năng tìm kiếm.

NOTES / GIẢI PHẪU MỘT Ý TƯỞNGMINH HỌA TƯƠNG TÁC

Bạn gõ “Cơm” và thấy “Cơm nhà”. Đó là một hành vi có thể quan sát. Chỉ nhìn giao diện, ta chưa biết ứng dụng lọc tại máy, gọi máy chủ hay dùng một chỉ mục riêng.

Trong mẫu của ts4m, app.js nghe sự kiện input, gọi filterNotes() từ search.js, rồi cập nhật danh sách. Hàm lọc đọc tiêu đề, chuyển về chữ thường và dùng includes().

Quan hệ import giúp tìm đúng file để đọc tiếp. Nó chưa tự chứng minh mọi hành vi. Với mẫu này, “com” chưa khớp “Cơm”: muốn bỏ dấu phải sửa thuật toán và thử lại bằng dữ liệu cụ thể.

Sơ đồ giải thích mẫu ghi chú do ts4m viết. Nút bấm đổi lớp minh họa; không chạy Rea và không gửi dữ liệu của bạn đi đâu.

03 / CHỌN ĐÚNG LỐI VÀO

Không chỉ
một loại phần mềm.

Đầu vào khác nhau cần công cụ khác nhau. Đây là những nhóm đáng biết trước khi cài cả một bộ phân tích.

BẮT ĐẦU NHẸ NHÀNG

JavaScript & Electron

Đọc thư mục ứng dụng đã giải nén hoặc ASAR, dựng quan hệ module, imports và ranh giới Electron. Phân tích tĩnh không cần Hopper hay Ghidra.

Thư mục / .asar Nguồn ↗
ĐI SÂU XUỐNG BINARY

Mã máy native

Khám phá strings, symbols, assembly, hàm, tham chiếu và pseudocode. Phân tích sâu dùng một provider như Hopper, Ghidra hoặc IDA phù hợp với mục tiêu.

Khả năng tùy provider Nguồn ↗
ĐỌC CẤU TRÚC MANAGED

Assembly .NET

Kiểm tra metadata, kiểu, thành viên và CIL mà không nạp/chạy assembly. NativeAOT, single-file hay IL2CPP cần xem giới hạn riêng; đuôi .dll chưa đủ để quyết định.

Không cần engine native Nguồn ↗
TỪ MÃ ĐẾN HÀNH VI

Web & runtime

Các luồng quan sát website, trình duyệt hoặc tiến trình giúp bổ sung điều thực sự diễn ra lúc chạy. Chúng có điều kiện riêng và có thể khởi chạy hoặc tương tác với mục tiêu.

Cần đọc đúng guide Nguồn ↗

Repo còn có hướng dẫn cho Android, firmware, WebAssembly, packet capture và nhiều loại artifact. Danh sách hỗ trợ, hệ điều hành và công cụ phụ thuộc thay đổi theo phiên bản; xem thư viện tài liệu chính thức ↗.

04 / TỪ TÒ MÒ ĐẾN BẮT TAY LÀM

Cài một công cụ.
Mở nhiều góc nhìn.

Trong hướng dẫn này, “triển khai” là chạy Rea trên máy có file cần phân tích và kết nối với agent. Luồng MCP bên dưới dùng stdio cục bộ, không cần website hay mở cổng HTTP công khai.

BẢN ĐỐI CHIẾUrea-agents 6.5.015.10.2026 · lệnh ghim phiên bản
NODE.JS + NPM22.19+ / 24.11+ / 26+Cụ thể: nhánh 22.x, 24.x hoặc ≥26.
Không gồm Node 23, 25 hay bản prerelease.
HỆ ĐIỀU HÀNHKiểm tra theo tác vụLinux cần ps tương thích procps.
Provider native có yêu cầu riêng.

Đầu tiên, kiểm tra máy.

Mở terminal, kiểm tra hai phiên bản. Nếu Node cũ hơn mức hỗ trợ, cập nhật trước khi chạy Rea. Trên Linux tối giản, bổ sung procps nếu thiếu; cả phân tích JavaScript tĩnh cũng dùng cơ chế giám sát tiến trình này. [2]

Kiểm tra môi trườngTerminal
node --version
npm --version
Máy Debian / Ubuntu chưa có procps?

Chỉ chạy khi cần bổ sung gói hệ thống; các bản Linux khác dùng trình quản lý gói tương ứng.

Debian / Ubuntu · chỉ khi thiếu psBash
sudo apt-get update
sudo apt-get install procps
A

Kết nối agent đang dùng.

Con đường ngắn nhất nếu bạn muốn trò chuyện với AI để khám phá phần mềm.

Kết nối AI agentTerminal
npx rea-agents@6.5.0 setup
  1. Chọn agent cần kết nối trong trình setup. Tài liệu liệt kê Claude Code, Codex, Cursor, Gemini CLI và các client khác.
  2. Đọc các đường dẫn và thay đổi được đề xuất. Setup thêm MCP cùng workflow hướng dẫn, sao lưu cấu hình hiện có và hỏi trước khi áp dụng.
  3. Hopper là lựa chọn riêng. Với bài tập JavaScript bên dưới, bạn có thể bắt đầu mà không cài engine native.
  4. Khởi động lại agent được setup nhắc tới. Khi đó mới kiểm tra kết nối và đưa câu hỏi đầu tiên.

Chỉ cài skill chưa đồng nghĩa đã đăng ký MCP server. Setup kết hợp hai phần này; cấu hình thủ công cần bạn quản lý riêng. [2]

B

Dùng thẳng trong terminal.

Phù hợp khi bạn muốn lưu JSON, viết script hoặc kiểm tra một file trước.

Cài CLI để dùng thường xuyênTerminal
npm install --global rea-agents@6.5.0
rea --help
rea providers --json

Lệnh rea có sẵn sau khi npm global bin được đưa vào PATH. Nếu chưa thấy lệnh, mở lại terminal hoặc dùng trực tiếp npx rea-agents@6.5.0 --help. Không cần đăng ký agent để chạy CLI.

providers liệt kê các provider; danh sách này không thay thế kiểm tra readiness cho từng tác vụ. Bài tập JavaScript phía dưới không cần native provider. [3]

C

Tự đăng ký MCP.

Dành cho client hỗ trợ cấu hình mcpServers dạng JSON trên macOS / Linux.

MCP thủ công · macOS / LinuxJSON
{
  "mcpServers": {
    "rea": {
      "command": "npx",
      "args": ["-y", "rea-agents@6.5.0", "mcp"]
    }
  }
}

Thêm entry rea vào cấu hình của client, giữ các server sẵn có, rồi khởi động lại client. Vị trí và cú pháp cấu hình tùy ứng dụng; các client dùng TOML hoặc định dạng khác không dùng nguyên khối JSON này.

Trên Windows, setup chính thức bọc package runner qua cmd.exe /d /c. Nên dùng tab “Kết nối AI agent” để công cụ tạo cấu hình đúng hệ điều hành. Bản đăng ký lâu dài nên ghim phiên bản cụ thể. [2]

05 / MANG VỀ MỘT THỨ CHẠY ĐƯỢC

Đọc một ô tìm kiếm.
Hiểu cả đường đi.

Một mẫu rất nhỏ, do ts4m viết riêng cho bài này. Không dependency, không cần binary thương mại, đủ để bắt đầu lần theo module.

1. Giải nén, rồi phân tích tĩnh.

Giữ thư mục rea-notes-demo sau khi giải nén. Mở terminal ở thư mục cha của nó, chạy lệnh dưới đây. Kết quả được lưu vào notes-evidence.json. Không cần mở giao diện mẫu để phân tích.

Phân tích mẫu sau khi giải nénTerminal
npx rea-agents@6.5.0 analyze-javascript-application ./rea-notes-demo --json > notes-evidence.json

2. Đọc bản tóm tắt trước.

Với ứng dụng lớn, Evidence có thể rất dài. Tài liệu hướng dẫn lưu kết quả rồi tạo một view tóm tắt. Đoạn dưới dùng jq trong Bash/zsh; cài jq trước nếu máy chưa có. [3]

Rút gọn kết quả · cần cài jqBash / zsh
jq -c '{source: {kind: "inline", evidence: .}, view: {kind: "summary"}}' notes-evidence.json > notes-view.json
npx rea-agents@6.5.0 inspect-analysis-view notes-view.json

3. Đưa agent một câu hỏi đủ cụ thể.

Khi MCP đã kết nối, dùng prompt này và chỉ rõ đường dẫn thật đến thư mục trên máy bạn.

Một câu hỏi có điểm đến rõ ràngPrompt
Phân tích thư mục rea-notes-demo tôi vừa giải nén.
Hãy lần theo cách ô tìm kiếm lọc danh sách ghi chú.
Chỉ ra file, hàm và quan hệ import làm bằng chứng.
Phân biệt điều đọc được trực tiếp với điều đang suy luận.
Chưa chạy ứng dụng; hãy liệt kê phần cần kiểm thử trước.
Sau đó đề xuất cách thêm tìm kiếm không phân biệt dấu tiếng Việt.
PHẠM VI KIỂM CHỨNG

Đã chạy phân tích JavaScript tĩnh và lệnh inspect-analysis-view trên chính mẫu tải về, với Rea 6.5.0, Node 24.11.0 và Linux x64. Hai lệnh hoàn tất thành công; kết quả giữ quan hệ import của ứng dụng. Đây là kiểm thử một mẫu nhỏ, chưa phải benchmark. Chưa kiểm thử provider native, build Rea từ nguồn, Windows hoặc phiên agent qua MCP.

Hãy yêu cầu “chỉ ra bằng chứng ở đâu” trước khi yêu cầu “viết lại tính năng”. Một câu trả lời hay cần có chỗ để kiểm tra lại.

06 / KHI MUỐN XUỐNG SÂU HƠN

Chào,
mã máy.

Phân tích native cần một engine phù hợp. Với Ghidra, Rea dùng bản cài có sẵn trên máy; setup không tự cài Ghidra, Java hay Python.

Chuẩn bị Ghidra và JDK.

Tài liệu tại thời điểm đối chiếu nhận Ghidra 12.1.x và JDK 64-bit theo yêu cầu của bản cài; bridge được xác minh upstream với Ghidra 12.1.4 + JDK 21. Kiến trúc JDK và native decompiler phải phù hợp với máy. [2]

Sau khi tự cài hai công cụ, thay đường dẫn mẫu bên dưới bằng đường dẫn tuyệt đối. program là file native bạn muốn phân tích.

Ghidra · macOS / Linux · thay hai đường dẫnBash / zsh
export GHIDRA_INSTALL_DIR="/absolute/path/to/ghidra_12.1.4_PUBLIC"
export JAVA_HOME="/absolute/path/to/jdk-21"
npx rea-agents@6.5.0 doctor --provider ghidra --json
npx rea-agents@6.5.0 analyze /absolute/path/to/program --provider ghidra --json

Linux/macOS và Windows có khác biệt. Hỗ trợ Ghidra trên Windows x64 được tài liệu đánh dấu thử nghiệm P0, có giới hạn về định dạng và thao tác. Đây là hướng dẫn theo tài liệu; ts4m chưa kiểm thử native provider trong bài này.

Phân tích lần đầu chậm hoặc bị timeout?

Ghidra cần import và auto-analysis trước khi trả kết quả phân tích. Tài liệu nêu deadline khởi động mặc định 330.000 ms; có thể đặt REA_GHIDRA_STARTUP_TIMEOUT_MS phù hợp cho binary lớn. Agent cũng có deadline riêng, nên tăng thời gian của provider chưa chắc giải quyết timeout phía client. Đọc hướng dẫn khôi phục, tránh khởi chạy chồng nhiều phiên phân tích.

07 / DÀNH CHO NGƯỜI MUỐN VỌC REPO

Tự dựng Rea
từ mã nguồn.

Chọn lối này khi muốn đọc, sửa hoặc đóng góp mã. Để dùng công cụ, bản npm phía trên thường ít bước hơn.

Ghim cả mã lẫn toolchain.

Lệnh này checkout đúng commit tham khảo. nvm install đọc .nvmrc trong repo; snapshot dùng Node 24.18.0 và npm 11.16.0, khác với mức runtime tối thiểu của gói npm.

npm ci cài dependency theo lockfile. check:fast kiểm tra nhanh, còn build:cached biên dịch runtime và đóng gói workflow. [7]

Trên Windows, source checkout không tự có native addon như gói npm phát hành; các workflow cần native controls đòi hỏi bước build riêng. Xem hướng dẫn Windows của repo trước khi chọn cách này.

Dựng từ mã nguồn · cần nvmBash / zsh
git clone https://github.com/morluto/rea.git
cd rea
git checkout d69acc3455c33f90a2fc4381db43d38b6af50622
nvm install
nvm use
npm install --global npm@11.16.0
npm ci
npm run check:fast
npm run build:cached
node scripts/rea.mjs --help
08 / NHỮNG ĐIỀU NÊN BIẾT TRƯỚC

Càng hiểu công cụ,
càng dùng đúng chỗ.

01

Local không có nghĩa mọi thứ đều offline.

Rea phân tích mục tiêu cục bộ. Khi dùng agent, kết quả công cụ đi vào ngữ cảnh của agent và chịu chính sách dữ liệu của nhà cung cấp model. Cân nhắc file và thông tin bạn đưa vào phiên làm việc. [1]

02

Quan sát khác với suy luận.

Module được tìm thấy, một nhánh được giải mã hay một lần chạy được ghi lại chỉ chứng minh phần tương ứng. Kết quả thiếu dữ liệu, code bị làm rối hoặc đường chạy chưa đi qua vẫn cần được ghi nhận.

03

Chọn tĩnh hay runtime có chủ đích.

Phân tích JavaScript và .NET tĩnh đọc file. Các luồng runtime có thể chạy hoặc tương tác với mục tiêu bằng quyền người dùng. Chọn tác vụ phù hợp và đọc điều kiện của đúng guide. [1]

04

MIT áp dụng cho phần mã Rea.

Các dependency giữ giấy phép riêng. Hopper, IDA và công cụ thương mại cần quyền sử dụng riêng; cài Rea không bao gồm bản quyền các công cụ đó. Dùng với phần mềm bạn sở hữu hoặc được phép phân tích. [8]

09 / GỠ RỐI NHANH

Trước khi
đóng terminal.

Doctor báo chưa healthy, có phải mọi thứ đều hỏng?

Không nhất thiết. Doctor không giới hạn phạm vi sẽ kiểm tra cả các engine tùy chọn, nên trạng thái tổng thể có thể chưa healthy dù tác vụ JavaScript của bạn chạy được. Kiểm tra đúng client hoặc provider cần dùng.

Chẩn đoán đúng thành phần đang dùngTerminal
npx rea-agents@6.5.0 doctor --client codex --json
npx rea-agents@6.5.0 doctor --skill --json

Ví dụ trên kiểm tra client codex; thay bằng client ID tương ứng nếu dùng ứng dụng khác. Đối với JavaScript tĩnh, chạy trực tiếp mẫu là kiểm tra sát tác vụ hơn.

Cài rồi mà agent chưa thấy Rea?

Khởi động lại đúng agent, kiểm tra setup đã ghi vào đúng cấu hình và runtime Node mà ứng dụng dùng có đủ phiên bản hay không. Chỉ cài workflow/skill chưa đủ để có MCP server. Chạy doctor cho đúng client và làm theo lỗi cụ thể.

Cập nhật Rea như thế nào?

Nếu dùng npx, chạy setup mới rồi xem lại thay đổi và khởi động lại agent. Cấu hình MCP cũ không tự đổi phiên bản chỉ vì bạn đã đọc bài hướng dẫn mới.

Lấy bản mới và cập nhật đăng ký MCPTerminal
npx rea-agents@latest setup

Nếu cài global bằng npm/Bun, tài liệu có rea update để cập nhật bản global sở hữu CLI, sau đó làm theo lệnh refresh setup được in ra. Source checkout cập nhật qua Git và quy trình build tương ứng.

Có cần đưa Rea lên VPS không?

Không cần cho cách bắt đầu trong bài. CLI và MCP stdio chạy trên máy có file cần kiểm tra. Nếu dùng máy Linux từ xa, agent, môi trường Node và đường dẫn file phải được cấu hình phù hợp trên máy đó; đây không phải một dashboard web cần trỏ tên miền.

Rea có viết lại được toàn bộ ứng dụng không?

Không nên xem đó là cam kết. Rea cung cấp công cụ và bằng chứng; agent có thể dùng chúng để xây dựng một phiên bản chức năng. Bạn vẫn phải xác định phạm vi, xử lý phần chưa rõ và kiểm thử kết quả. Mã decompile không đồng nghĩa mã nguồn nguyên bản.

GHI CHÚ BIÊN TẬP / ĐỌC TỪ NGUỒN

Giữ một đường
về bằng chứng.

Bài tham khảo snapshot d69acc3 và gói npm 6.5.0 ngày 15.10.2026. Repo phát triển nhanh; nhánh main và bản phát hành có thể khác nhau. Kiểm tra release đang dùng trước khi áp dụng tính năng mới.

  1. Rea — tổng quan và phạm vi hỗ trợ
  2. Cài đặt, Node.js, setup, MCP và Ghidra
  3. CLI, Evidence và cách rút gọn kết quả
  4. Luồng phân tích ứng dụng JavaScript
  5. Phân tích .NET và các dạng triển khai
  6. Quan sát trình duyệt và điều kiện sử dụng
  7. Dựng từ mã nguồn và toolchain phát triển
  8. Giấy phép MIT của Rea
  9. Gói chính thức rea-agents 6.5.0 trên npm
SỰ TÒ MÒ CŨNG LÀ MỘT CÔNG CỤ.

Đừng dừng ở
“trông hay đấy”.

Thử hỏi thêm một câu: “Nó hoạt động thế nào?”

Sao chép nội dung

Trình duyệt chưa cho phép sao chép tự động. Bạn có thể chọn và sao chép phần dưới đây.