使用说明
吉德拉诺麦克普
将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 |
启用详细日志记录 |
-j, --jobs |
并行反编译器线程(0=自动,1=串行;默认:自动) |
--strict |
错误时大声失败,而不是记录并继续 |
输出
| 目录/文件 | 描述 |
|---|---|
call_graph.json |
函数调用图(节点+边),包括函数名称、地址、调用者/被调用者计数 |
decompile/ |
解压缩的C文件(每个函数一个,命名为 <name>_<address>.c),包括函数名、地址、调用者、被调用者 |
strings.txt |
已发现字符串,制表符分隔: address length type refs value (refs =引用字符串的函数) |
imports.txt |
导入表,制表符分隔: library name address refs (refs =调用导入的函数) |
exports.txt |
导出表,制表符分隔: address name demangled |
sections.txt |
具有权限和香农熵(高熵)的内存块⇒ 可能已打包/加密) |
triage.txt |
调用可疑API的入口点和函数(注入、持久性、网络、加密、反分析) |
memory/ |
内存六角转储,1MB块(默认情况下排除可执行/代码块;使用 --all-memory) |
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导出 |
--all-memory |
在内存十六进制转储中包含可执行(代码)块(默认情况下排除) |
--no-strings |
跳过字符串提取 |
--no-imports |
跳过导入表导出 |
--no-exports |
跳过导出表导出 |
--decompiler-timeout |
每个函数的超时时间(秒)(0=无限制,默认值:60) |
--max-payload |
最大反编译器有效负载大小(MB)(默认值:100) |
安全
分析是 静态 --Ghidra对样本进行反汇编和反编译,但从未 执行它。加载器仍然解析不受信任的、可能是恶意的输入,因此 真正的恶意软件在一次性VM或容器内运行,作为深度防御。
