- Elias Bachaalany (0xeb) vừa công bố libghidra — typed SDK 88-method cho phép C++, Python và Rust điều khiển Ghidra để decompile, rename, inspect xrefs...
- không cần viết Java script hay đụng GUI.
- Thiết kế xoay quanh AI agents.
TL;DR
libghidra là typed SDK mới do Elias Bachaalany (0xeb / @allthingsida) phát hành, cho phép bạn tự động hoá Ghidra từ C++, Python và Rust. Cùng một bề mặt IClient gồm 88 method hoạt động trên cả ba ngôn ngữ, với hai backend: HttpClient nói chuyện với Ghidra JVM đang chạy, và LocalClient là decompiler engine C++ chạy offline không cần Java. Mục tiêu chính: phục vụ AI agent reverse-engineer — coi Ghidra như hạ tầng, không chỉ là GUI.
What's new
Hệ sinh thái Ghidra lâu nay gắn chặt với JVM: muốn automation bạn viết Java hoặc Jython, hoặc gọi headless analyzer. libghidra tách bề mặt API ra khỏi runtime đó. Nó cung cấp một interface duy nhất, được typed đầy đủ, với các khả năng cốt lõi mà người làm RE thực sự cần:
- Decompile function, lấy pseudocode
- Rename function, symbol; thêm comment, annotation
- Inspect symbol, type, cross-reference (xrefs)
- Query memory, disassembly, listing
- Quản lý vòng đời project: open, save, close, reopen
Mọi call đều trả về StatusOr<T>, nghĩa là bạn nhận được kết quả typed hoặc status lỗi có cấu trúc — không phải chuỗi hay exception bất định.
Why it matters
Đây không phải một plugin LLM nữa. Đây là tầng SDK bên dưới mọi plugin LLM. Các dự án như GhidraMCP, GhidrAssist hay OGhidra đang bọc Ghidra thành công cụ MCP cho chatbot; libghidra thì mở ra bề mặt fine-grained để bạn tự xây agent, pipeline hoặc tooling native trên đó — không bị khoá vào một framework cụ thể nào. Với AI agent coding, việc có API typed, deterministic quan trọng hơn nhiều so với chat wrapper: agent cần biết chính xác input/output schema để lập kế hoạch nhiều bước.
Technical facts
| Thuộc tính | Chi tiết |
|---|---|
| Version | 0.0.1 alpha |
| License | Mozilla Public License 2.0 |
| Interface | 1 IClient với 88 method, trả StatusOr<T> |
| Backend A | HttpClient → Ghidra JVM + extension LibGhidraHost (mặc định http://127.0.0.1:18080) |
| Backend B | LocalClient — decompiler C++ offline, không cần JVM |
| Ghidra tối thiểu | 12.0.4+ |
| Build tool | JDK 21 + Gradle (extension), C++20 + CMake 3.20+ (C++ SDK) |
Ba SDK cùng hình dạng API, nhưng mỗi bên có tinh chỉnh riêng: Python có cả biến thể sync lẫn async kèm CLI, Rust có helper phân trang, C++ có thêm LocalClient cho case không muốn dựng JVM.
Code snippet cho cảm giác
Python:
import libghidra as ghidra
client = ghidra.connect("http://127.0.0.1:18080")
funcs = client.list_functions()Rust:
let client = ghidra::connect("http://127.0.0.1:18080");
let funcs = client.list_functions(0, u64::MAX, 10, 0)?;C++:
auto client = ghidra::connect("http://127.0.0.1:18080");
auto funcs = client->ListFunctions(0, UINT64_MAX, 10, 0);Comparison
| Cách tiếp cận | Ngôn ngữ | Runtime | Mức trừu tượng |
|---|---|---|---|
| Ghidra scripting gốc | Java / Jython | Cần JVM | Thấp — gắn chặt GUI/headless |
| GhidraMCP / GhidrAssist | Prompt LLM | Cần JVM + MCP server | Coarse-grained, hướng chat |
| libghidra HttpClient | C++ / Python / Rust | Cần JVM (Ghidra chạy) | Typed fine-grained, 88 method |
| libghidra LocalClient | C++ | Không cần JVM | Offline decompile, subset API |
Nói cách khác: nếu bạn đang tự build AI agent, pipeline CI cho binary analysis, hoặc nhúng decompiler vào một tool native, libghidra là tầng nên với tới trước khi đụng Java.
Use cases
- AI reverse-engineering agent — target chính. Agent gọi typed method thay vì prompt GUI, dễ planning nhiều bước.
- Batch pipeline — decompile hàng loạt binary, diff symbol giữa các version, extract xrefs để build knowledge graph.
- Native tooling — LocalClient cho phép nhúng decompiler vào công cụ C++/Rust mà không cần đóng gói JVM.
- Webapp phân tích — query program DB từ backend Python/Rust, cache kết quả, serve qua API riêng.
Limitations & pricing
- API và model còn evolve — chưa có cam kết stability cho v0.0.1 alpha.
- C++ API hiện lộ trực tiếp protobuf header, chưa có lớp abstraction sạch.
- Mutate biến local cần
local_idcanonical — lệch một chút là lỗi. - Validation tập trung vào live-host và headless; các đường đi khác ít được thử.
- Miễn phí, open source theo MPL-2.0; cần cài Ghidra 12.0.4+ riêng.
What's next
Tweet khởi đầu đánh dấu 1/n nên sẽ còn các post tiếp theo giải thích kiến trúc và ví dụ. Kỳ vọng roadmap gần: ổn định API, mở rộng bề mặt LocalClient, bọc lại protobuf, bổ sung ví dụ cho agent framework phổ biến. Với người đang xây AI RE agent, đây là thời điểm tốt để thử và góp issue lúc SDK còn mềm.
Nguồn: 0xeb/libghidra, @allthingsida trên X.

