Tools

RE Toolkit (1/5): MCP server cho reverse engineering — GhidraMCP, IDA MCP, Binary Ninja, radare2

Tóm tắt

GhidraMCP (miễn phí), Hex-Rays ida-mcp (IDA 9.4+), binary_ninja_mcp và radare2-mcp cho agent tự decompile, liệt kê và đổi tên hàm. Chạy trong VM, giữ server ở localhost, không cho agent quyền shell với mẫu lạ và kiểm chứng mọi tên AI đặt.

Đọc hàng nghìn hàm đã bị strip, đặt lại tên biến, đoán cấu trúc dữ liệu là phần tốn thời gian nhất của reverse engineering. Năm 2025–2026, một nhóm repo mới xuất hiện để chuyển phần việc này sang AI agent: các MCP server nối Ghidra, IDA Pro, Binary Ninja và radare2 với Claude Code, Cursor, Codex… Agent có thể tự liệt kê hàm, đọc mã đã decompile, đổi tên và ghi chú ngay trong project. Bài đầu của loạt RE Toolkit chọn ra năm repo đáng dùng nhất, cách cài, và những rủi ro ít người nhắc tới.

Trang GitHub của LaurieWired/GhidraMCP
Trang GitHub của LaurieWired/GhidraMCP (ảnh chụp tháng 11/2026)

GitHub: https://github.com/LaurieWired/GhidraMCP · khoảng 11,8 nghìn sao · Java/Python · Apache-2.0

Năm MCP server cho reverse engineering

RepoCông cụ nềnĐiểm mạnhSao · License
LaurieWired/GhidraMCPGhidra (miễn phí)Decompile, liệt kê hàm/lớp/import/export, tự đổi tên hàm và dữ liệu~11,8k · Apache-2.0
HexRaysSA/ida-mcpIDA Pro 9.4+Bản chính thức của Hex-Rays, chạy headless qua idalib hoặc mở GUI~1,5k · MIT
mrexodia/ida-pro-mcpIDA Pro 8.3+ (không hỗ trợ IDA Free)Repo cộng đồng phổ biến nhất, có plugin cho Claude Code và Codex~13,4k · MIT
fosdickio/binary_ninja_mcpBinary NinjaCài qua Plugin Manager, tự cấu hình client, mở nhiều binary cùng lúc~450 · GPL-3.0
radareorg/radare2-mcpradare2 (miễn phí)Viết bằng C, có chế độ chỉ-đọc, sandbox và giới hạn tool~350 · MIT

Lưu ý: chính README của mrexodia/ida-pro-mcp hiện khuyên chuyển sang bản chính thức của Hex-Rays. Nếu đang dùng IDA 9.4 trở lên, nên chọn HexRaysSA/ida-mcp và tắt các IDA MCP khác để agent không bị nhầm công cụ.

Cài GhidraMCP với Claude Code

  1. Cài Ghidra và uv. Tải file zip plugin trong mục Releases của repo (đúng phiên bản Ghidra đang dùng).
  2. Trong Ghidra: File → Install Extensions → +, chọn file zip, khởi động lại, rồi bật GhidraMCPPlugin ở File → Configure → Developer. Plugin mở HTTP server ở 127.0.0.1:8080.
  3. Đăng ký MCP server với Claude Code:
claude mcp add ghidra -- uvx --from git+https://github.com/LaurieWired/GhidraMCP \
  ghidra-mcp --ghidra-server http://127.0.0.1:8080/

Các client nhận cấu hình JSON (Claude Desktop, Cursor, VS Code) dùng cùng lệnh uvx trong khối mcpServers.

Các lựa chọn khác

# IDA Pro (chính thức Hex-Rays)
uvx ida-hcli mcp install

# Binary Ninja: cài plugin qua Plugins > Manage Plugins, rồi cấu hình client
npx -y binary-ninja-mcp --host localhost --port 9009

# radare2
r2pm -Uci r2mcp
# cấu hình client: "command": "r2pm", "args": ["-r", "r2mcp"]

Một phiên làm việc mẫu

Mở binary trong Ghidra, chạy auto-analysis xong rồi mới giao cho agent. Prompt hiệu quả thường hẹp và có tiêu chí kiểm chứng:

Liệt kê các hàm gọi tới recv/send. Với mỗi hàm, decompile, tóm tắt
1–2 câu, đề xuất tên mới. CHỈ đổi tên khi chắc chắn; đánh dấu
"đoán" ở phần chưa chắc. Không chạy binary.

Cách này tận dụng điểm mạnh của LLM (đọc mã giả C, đoán ý đồ, đặt tên) mà vẫn để bạn duyệt kết quả trong giao diện quen thuộc.

Rủi ro cần biết

  • Prompt injection từ chính binary: chuỗi trong mẫu malware có thể chứa câu lệnh nhắm vào AI ("bỏ qua hướng dẫn trước…"). Đừng cấp cho agent quyền shell hay mạng khi phân tích mẫu không tin cậy.
  • Ảo giác: agent có thể đặt tên rất thuyết phục nhưng sai. Coi tên do AI đặt là giả thuyết; kiểm tra bằng xref, hằng số, hoặc debug thật (xem bài phân tích động).
  • Mở cổng mạng: các plugin này mở HTTP server. Giữ ở 127.0.0.1; radare2-mcp chỉ nên bind 0.0.0.0 khi bật xác thực bearer.
  • Dữ liệu ra ngoài: mã decompile được gửi lên nhà cung cấp LLM. Với binary của khách hàng hoặc có NDA, kiểm tra hợp đồng trước, hoặc dùng mô hình chạy cục bộ (LM Studio có trong danh sách client được hỗ trợ).
  • Pháp lý: chỉ phân tích phần mềm của bạn hoặc được phép; đọc thêm bài về REA để thấy giới hạn thực tế.

Áp dụng thế nào?

  • Dev: Bắt đầu với GhidraMCP (miễn phí hoàn toàn). Thử trên crackme hoặc binary tự biên dịch để so sánh tên AI đặt với tên thật.
  • Tech Lead: Chuẩn hoá một máy ảo phân tích có sẵn Ghidra + MCP, không có quyền mạng ra ngoài trừ API LLM; quy định agent chỉ đọc và đổi tên, không thực thi.
  • PM: MCP rút ngắn giai đoạn "đọc hiểu" từ vài ngày xuống vài giờ ở các việc như hiểu hệ thống cũ mất mã nguồn, nhưng vẫn cần chuyên gia duyệt kết quả trước khi ra quyết định.

Nguồn & tham khảo

  1. LaurieWired/GhidraMCP (GitHub) — LaurieWired
  2. HexRaysSA/ida-mcp (GitHub) — HexRaysSA
  3. mrexodia/ida-pro-mcp (GitHub) — mrexodia
  4. fosdickio/binary_ninja_mcp (GitHub) — fosdickio
  5. radareorg/radare2-mcp (GitHub) — radareorg