git clone https://github.com/yourusername/GhidraInsight.git
cd GhidraInsight
docker-compose upAccess dashboard: http://localhost:3000
cd ghidra-plugin
./gradlew build
# Copy JAR to Ghidra extensions directory
cp build/libs/GhidraInsight-1.0.0.jar $GHIDRA_INSTALL_DIR/Extensions/Ghidra/cd python-mcp
pip install -e .
ghidrainsight-server --host 0.0.0.0 --port 8000cd web-dashboard
npm install
npm run dev- Open
http://localhost:3000 - Drag & drop your binary or click to select
- Click "Start Analysis"
- Select features:
- ✅ Crypto Detection
- ✅ Vulnerability Analysis
- ✅ Taint Analysis
- Wait for results (typically 30-60 seconds)
- Crypto: Detected algorithms and their locations
- Vulnerabilities: CVSS scores and remediation hints
- Taint: Data flow paths from sources to sinks
Use the chat interface to ask:
- "What functions use crypto?"
- "How does user input flow to system calls?"
- "What are the main security risks?"
ghidrainsight analyze --file binary.elf \
--features crypto,taint,vulnerabilities \
--output report.jsonghidrainsight-server --config config.yaml \
--host 0.0.0.0 \
--port 8000 \
--log-level DEBUGcurl -X POST http://localhost:8000/api/analyze \
-F "file=@binary.elf" \
-H "X-API-Key: your-api-key" \
-d "features=crypto,vulnerabilities"import asyncio
from ghidrainsight import GhidraInsightClient
async def main():
async with GhidraInsightClient("http://localhost:8000") as client:
# Analyze binary
results = await client.analyze_binary(
"binary.elf",
features=["crypto", "vulnerabilities"]
)
print(f"Found {len(results['vulnerabilities'])} issues")
# Analyze specific function
function = await client.analyze_function("0x401234")
print(function)
asyncio.run(main())import openai
response = openai.ChatCompletion.create(
model="gpt-4",
tools=[{
"type": "function",
"function": {
"name": "analyze_binary",
"description": "Analyze a binary with GhidraInsight",
"parameters": {
"type": "object",
"properties": {
"file_path": {"type": "string"}
},
"required": ["file_path"]
}
}
}],
messages=[
{"role": "user", "content": "Analyze this binary: binary.elf"}
]
)export GHIDRA_INSTALL_DIR=/path/to/ghidra
export JWT_SECRET=your-secret-key-here
export API_KEY=your-api-key-here
export LOG_LEVEL=INFO
export RATE_LIMIT=60server:
host: 0.0.0.0
port: 8000
auth:
enabled: true
provider: jwt
secret: ${JWT_SECRET}
security:
rate_limit:
requests_per_minute: 60
cors:
allowed_origins:
- http://localhost:3000# Find process using port 8000
lsof -i :8000
# Kill the process
kill -9 <PID>
# Or use different port
ghidrainsight-server --port 8001# Increase JVM memory for Java plugin
export JAVA_OPTS="-Xmx8g"- Ensure firewall allows port 8001
- Check CORS configuration
- Verify server is running
- Close unused analysis tabs
- Reduce file size or split analysis
- Check for memory leaks with
jmap
- 📖 Read API_REFERENCE.md for detailed endpoints
- 🔐 Review SECURITY.md for security practices
- 🚀 Check examples/ for integration samples
- 🐛 Report issues on GitHub Issues
Happy analyzing! 🔍