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, 二进制分析, 二进制安全, 云安全监控, 云安全运维, 云资产清单, 反编译器, 固件分析, 恶意软件分析, 批量处理, 无后门, 源码还原, 漏洞搜索, 网络调试, 自动化, 调用图, 逆向工具, 逆向工程, 静态分析