totekuh/ghidra-decomp
GitHub: totekuh/ghidra-decomp
基于 Ghidra 的批量反编译工具,将二进制文件转换为可浏览的 C 源码树和 JSON 索引,支持 grep 搜索与 AI 辅助分析。
Stars: 0 | Forks: 0
# ghidra-decomp
使用 Ghidra 将二进制文件批量反编译为可浏览的源码树。
接收一个二进制文件,对每个函数运行 Ghidra 的反编译器,并生成一个包含 `.c` 文件和 JSON 索引的目录——便于 grep、代码审查或 AI 辅助分析。
## 为什么
通过 Ghidra 的 GUI(或 MCP)进行逆向工程意味着一次只能查看一个函数。该工具预先导出所有内容,以便您可以像处理普通代码库一样处理二进制文件:grep 搜索模式、阅读调用图、搜索字符串——所有这些都无需等待反编译的往返过程。
## 安装
需要 [Ghidra](https://ghidra-sre.org/) 11.0+(其中捆绑了 pyghidra)。
```
pip install -e .
```
将 `GHIDRA_INSTALL_DIR` 设置为您的 Ghidra 安装路径,或传递 `--ghidra-path` 参数。
## 用法
```
ghidra-decomp ./firmware.bin -o ./firmware_decomp
```
选项:
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-o, --output` | 输出目录 | `_decomp/` |
| `--timeout` | 单函数反编译超时时间(秒) | 60 |
| `--ghidra-path` | Ghidra 安装路径 | `$GHIDRA_INSTALL_DIR` |
| `--base-addr` | 导出前将二进制文件重定向到此地址(例如 `0x80000000`) | none |
## 输出
```
firmware_decomp/
├── functions/
│ ├── 00010000_main.c
│ ├── 00010234_parse_config.c
│ └── ...
├── all_functions.c # everything in one file
├── types.json # recovered structs, enums, unions, typedefs
├── functions.json # function index with address ranges + signatures
├── callgraph.json # who calls who
├── strings.json # strings + xrefs to functions
├── imports.json # external library functions
├── exports.json # exported entry points
├── symbols.json # globals, labels, data
├── sections.json # memory map with r/w/x permissions
└── metadata.json # binary info + stats
```
每个 `.c` 文件都包含一个元数据头:
```
// Function: parse_config
// Address: 00010234
// Size: 284 bytes
// Calling: __stdcall
// Params: 3
void parse_config(char *param_1, int param_2, int param_3) {
...
}
```
## 预期工作流
1. **导出** 使用 `ghidra-decomp` 导出二进制文件
2. **分析** 像分析源代码一样分析输出结果 —— grep、glob、阅读
3. **回写** 通过 MCP(单独的工具)将重命名/注释回写到 Ghidra
## 许可证
MIT
标签:API提取, CTF工具, DAST, Ghidra, pyghidra, Python, 二进制分析, 二进制安全, 云安全监控, 云安全运维, 云资产清单, 反编译器, 固件分析, 恶意软件分析, 批量处理, 无后门, 源码还原, 漏洞搜索, 网络调试, 自动化, 调用图, 逆向工具, 逆向工程, 静态分析