I craft unique cereal names, stories, and ridiculously cute Cereal Baby images.

Ghidra-MCP-Zig
Ein Ghidra-Plugin, das eine Brücke zwischen Ghidra und einem Zig-basierten MCP-Server für erweiterte Programmanalysefunktionen bietet.
1
Github Watches
0
Github Forks
4
Github Stars
Ghidra MCP Zig Plugin
A Ghidra plugin that provides a bridge between Ghidra and a Zig-based MCP server for enhanced program analysis capabilities.
Features
- JNI-based communication between Ghidra and Zig
- Function decompilation and renaming
- Data symbol management
- Import/Export listing
- MCP server integration
- Comprehensive test suite
- Modern build system with Zig
- Efficient memory management
- Type-safe JNI bridge implementation
- Go client library for easy integration
Prerequisites
- Zig (version 0.13.0 or later)
- Ghidra (version 11.3.1 or later)
- Java Development Kit (JDK) 17 or later
- Go (version 1.22.4 or later)
- Gradle (version 8.13 or later)
- Make
Project Structure
ghidra-mcp-zig/
├── src/
│ ├── plugin/
│ │ ├── jni/
│ │ │ └── bridge.zig # JNI interface implementation
│ │ ├── analysis.zig # Program analysis logic
│ │ └── plugin.zig # Plugin initialization
│ └── server/
│ └── main.zig # MCP server implementation
├── java/ # Ghidra plugin Java code
│ ├── build.gradle # Gradle build configuration
│ ├── gradlew # Gradle wrapper script
│ └── src/ # Java source files
├── pkg/
│ └── mcp/
│ └── client/ # Go MCP client library
│ ├── client.go # Client implementation
│ └── client_test.go # Client tests
├── build.zig # Build configuration
├── build.zig.zon # Dependencies configuration
├── go.mod # Go module definition
└── Makefile # Build automation
Dependencies
- zig-jni (v0.0.9) - JNI bindings for Zig
Building
-
Clone the repository:
git clone https://github.com/yourusername/ghidra-mcp-zig.git cd ghidra-mcp-zig
-
Create a
.env
file with the following variables:GHIDRA_PATH=/path/to/ghidra_11.3.1_PUBLIC/Ghidra/Features/Base/lib/Base.jar JAVA_HOME=/path/to/your/jdk
-
Build the project:
# Build everything make all # Or build specific components make build-server # Build the MCP server make build-plugin # Build the Ghidra plugin
-
Run the server:
make run-server
Build Targets
Target | Description | Example Usage |
---|---|---|
all |
Build all components | make all |
build-server |
Build MCP server | make build-server |
build-plugin |
Build Ghidra plugin | make build-plugin |
clean |
Clean all artifacts | make clean |
clean-server |
Clean server artifacts | make clean-server |
clean-plugin |
Clean plugin artifacts | make clean-plugin |
Run Targets
Target | Description | Example Usage |
---|---|---|
run-server |
Start MCP server | make run-server |
run-plugin |
Start Ghidra plugin | make run-plugin |
Test Targets
Target | Description | Example Usage |
---|---|---|
test |
Run all tests | make test |
test-server |
Run server tests | make test-server |
test-plugin |
Run plugin tests | make test-plugin |
For a complete list of available targets, run:
make help
Installation
-
Build the plugin:
make build-plugin
-
Copy the built plugin to your Ghidra plugins directory:
cp zig-out/lib/libghidra-mcp-zig.dylib /path/to/ghidra/Extensions/Ghidra/ghidra-mcp-zig/
-
Restart Ghidra
Usage
- Start Ghidra and open a program for analysis
- The MCP plugin will be available in the Ghidra plugin manager
- Use the plugin's features through the Ghidra interface
Available MCP Commands
Command | Description | Parameters |
---|---|---|
decompile |
Decompile a function | address: u64 |
rename_function |
Rename a function | address: u64, new_name: string |
rename_data |
Rename a data object | address: u64, new_name: string |
list_functions |
List all functions | None |
list_data |
List all data objects | None |
list_imports |
List all imports | None |
list_exports |
List all exports | None |
Error Handling
The implementation includes comprehensive error handling with specific error types:
Error Type | Description |
---|---|
ConnectionError |
Connection-related errors |
MessageError |
Message handling errors |
ResponseError |
Response parsing errors |
InvalidAddress |
Invalid memory address |
InvalidFunction |
Invalid function reference |
InvalidData |
Invalid data reference |
DecompilationFailed |
Function decompilation failed |
RenameFailed |
Rename operation failed |
OutOfMemory |
Memory allocation failed |
InvalidProgram |
Invalid program state |
JNIError |
JNI bridge errors |
Development
Adding New Features
- Update the JNI interface in
src/plugin/jni/bridge.zig
- Implement the corresponding functionality in
src/plugin/analysis.zig
- Update the server implementation in
src/server/main.zig
if needed - Rebuild and test
Debugging
- Use
make clean
to remove build artifacts - Check the Ghidra log for plugin-related messages
- The server logs will be available in the console when running with
make run-server
JNI Bridge Implementation
The JNI bridge provides a type-safe interface between Zig and Java:
- Memory management with proper allocation/deallocation
- JNI reference management with
DeleteLocalRef
- Error handling with null checks
- Type conversion between Zig and Java types
- Array creation and element setting
- Object creation and field setting
Key Features
-
Memory Safety
- Automatic cleanup of JNI references
- Proper string handling with UTF-8 conversion
- Safe memory allocation and deallocation
-
Type Safety
- Strong typing for all JNI operations
- Compile-time type checking
- Safe type conversions
-
Error Handling
- Comprehensive error types
- Null checks for all JNI operations
- Proper cleanup on error
-
Object Management
- Safe object creation and destruction
- Field access with type checking
- Array handling with bounds checking
Contributing
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
相关推荐
Evaluator for marketplace product descriptions, checks for relevancy and keyword stuffing.
I find academic articles and books for research and literature reviews.
Confidential guide on numerology and astrology, based of GG33 Public information
Converts Figma frames into front-end code for various mobile frameworks.
Advanced software engineer GPT that excels through nailing the basics.
Take an adjectivised noun, and create images making it progressively more adjective!
Entdecken Sie die umfassendste und aktuellste Sammlung von MCP-Servern auf dem Markt. Dieses Repository dient als zentraler Hub und bietet einen umfangreichen Katalog von Open-Source- und Proprietary MCP-Servern mit Funktionen, Dokumentationslinks und Mitwirkenden.
Ein einheitliches API-Gateway zur Integration mehrerer Ethercan-ähnlicher Blockchain-Explorer-APIs mit Modellkontextprotokoll (MCP) für AI-Assistenten.
Mirror ofhttps: //github.com/bitrefill/bitrefill-mcp-server
Reviews

user_DTKKyLQa
I've been a loyal user of the ghidra-mcp-zig for some time now, and it has significantly improved my workflow. Kudos to streamerd for creating such a robust and efficient tool. It's well-documented and integrates seamlessly with Ghidra. I highly recommend it for anyone in need of a reliable multi-core processing solution. Check it out on GitHub!