吉德拉诺麦克普
将Ghidra反编译结果导出为源文件,以供AI IDE使用。
从cmd运行,使用pyghidra和headless模式,不需要Ghidra GUI。
只需将uvx命令复制粘贴到代理或技能中即可。
灵感来源:https://github.com/P4nda0s/IDA-NO-MCP
文本、源代码和Shell是LLM的母语。
安装和使用
使用uv进行安装
uv tool install git+https://github.com/gxenos/GHIDRA-NO-MCP.git从任何地方跑:
ghidra-no-mcp -g /path/to/GHIDRA /path/to/binary /output/dir用uvx跑步
uvx git+https://github.com/gxenos/GHIDRA-NO-MCP -g /path/to/GHIDRA /path/to/binary /output/dir或者使用环境变量:
GHIDRA_INSTALL_DIR=/path/to/GHIDRA uvx git+https://github.com/gxenos/GHIDRA-NO-MCP /path/to/binary /output/dir其他安装方法
本地开发
uv venv && uv pip install -e .例子
# Using environment variable
export GHIDRA_INSTALL_DIR=/opt/ghidra/ghidra_12.0.4_PUBLIC
uv run ghidra-no-mcp ./malware.exe ./analysis
# Using CLI argument
uv run ghidra-no-mcp -g /opt/ghidra ./malware.exe ./analysis
# With uvx
GHIDRA_INSTALL_DIR=/opt/ghidra uvx git+https://github.com/gxenos/GHIDRA-NO-MCP ./malware.exe ./analysis选项
| 选项 | 描述 |
|---|---|
-g, --ghidra-path | Ghidra安装路径 |
-v, --verbose | 启用详细日志记录 |
输出
| 目录/文件 | 描述 |
|---|---|
call_graph.json | 函数调用图(节点+边),包括函数名称、地址、调用者/被调用者计数 |
decompile/ | 分解的C文件(每个函数一个),包括函数名、地址、调用者、被调用者 |
strings.txt | 字符串表 |
imports.txt | 导入表 |
exports.txt | 导出表 |
memory/ | 内存六角转储,1MB块 |
decompile_skipped.txt | 跳过的功能 |
decompile_failed.txt | 功能失败 |
每 .c 文件包括元数据标头:
/*
* func-name: main
* func-address: 0x401000
* callers: 0x402000
* callees: 0x404000
*/这 call_graph.json 文件包含完整的调用图:
{
"nodes": [
{"address": "0x401000", "name": "main", "is_external": false, "caller_count": 0, "callee_count": 2},
{"address": "0x402000", "name": "validate_input", "is_external": false, "caller_count": 1, "callee_count": 3}
],
"edges": [
{"caller": "0x401000", "caller_name": "main", "callee": "0x402000", "callee_name": "validate_input"}
],
"stats": {"total_functions": 150, "total_calls": 342, "external_calls": 45}
}分析
默认情况下,脚本使用默认分析选项运行Ghidra。
分析选项
| 选项 | 描述 |
|---|---|
--no-memory | 跳过内存hexdump导出 |
--no-strings | 跳过字符串提取 |
--no-imports | 跳过导入表导出 |
--no-exports | 跳过导出表导出 |
--decompiler-timeout | 每个函数的超时时间(秒)(0=无限制,默认值:0) |
--max-payload | 最大反编译器有效负载大小(MB)(默认值:100) |
