boricj/ghidra-delinker-extension

GitHub: boricj/ghidra-delinker-extension

Ghidra 扩展,将已链接的二进制程序导出为可重定位的目标文件,支持重建符号和重定位信息。

Stars: 574 | Forks: 28

# Ghidra 的 Object file 导出扩展 该 Ghidra 扩展支持将程序的一部分导出为 object file。这些 object file 包含有效的元数据(符号、重定位表等),因此可以被工具链直接重用以进行后续处理。 用例包括: * [高级二进制修补](https://boricj.net/tenchu1/2024/05/31/part-11.html),通过利用链接器将原始部分和修改部分合并在一起,而不是手动完成这项工作; * [软件移植](https://boricj.net/atari-jaguar-sdk/2024/01/02/part-5.html),通过从程序中隔离出与系统无关的代码并替换其余部分; * 将[程序](https://boricj.net/atari-jaguar-sdk/2023/12/18/part-3.html)或 object file 从一种文件格式转换为另一种; * [创建](https://boricj.net/tenchu1/2024/03/11/part-5.html)[库](https://boricj.net/tenchu1/2024/03/18/part-6.html),通过提取程序的一部分并在另一个环境中重用它们; * 反编译项目,通过将程序拆分为多个 object file 并以“忒修斯之船”的方式重新实现它们; * …… 支持的指令集架构和 object file 矩阵: | | x86 | x86_64 | MIPS | | ------------- | ---- | ------ | ---- | | COFF | ✅ | ✅ | ❌ | | ELF | ✅ | ✅ | ✅ | ## 构建 (CLI) * 克隆此仓库; * 设置 `GHIDRA_INSTALL_DIR` 环境变量,指向您的 Ghidra 安装目录; * 运行 `gradle buildExtension`。 Ghidra 扩展归档文件将创建在 `dist/` 目录中。 ## 安装 * 从 [发布页面](https://github.com/boricj/ghidra-delinker-extension/releases) 下载扩展或在本地构建; * 通过 **File > Install Extensions…** 在您的 Ghidra 实例中安装该扩展; * 在 CodeBrowser 窗口中,通过 **File > Configure > Experimental** 启用 **RelocationTableSynthesizedPlugin** 插件。 ## 用法 1. 在 Listing 视图中选择一组要提取的地址; 2. 运行 **Relocation table synthesizer** 分析器(在单次模式下可用); 3. 通过 **File > Export Program…** 调用可重定位 object file 导出器。 重建的重定位信息可以通过 **Window > Relocation table (synthesized)** 查看。 可以通过在 **Analysis > Auto Analyze...** 对话框中设置 **Relocation table synthesizer** 分析器的 **Evaluation report policy** 选项来启用详细的评估报告。 ## 它是如何工作的? Object file 由三部分组成: * 可重定位的段(section)字节; * 符号表; * 重定位表。 当调用链接器从一组 object file 生成可执行文件时,它会: * 在内存中布局它们的段; * 计算符号在虚拟地址空间中的地址; * 根据符号的最终地址,将重定位应用到段字节上。 通常,重定位表在此过程之后会被丢弃,如果不保留调试符号,符号表也会被丢弃,只留下不可重定位的段字节。 然而,通过仔细分析,这些数据可以被重建,这使我们能够有效地将程序“去链接(delink)”回 object file。
标签:COFF, ELF, Ghidra, Ghidra插件, Gradle, JS文件枚举, MIPS, Wayback Machine, x86, x86_64, 二进制修补, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码复用, 反汇编, 后台面板检测, 域名枚举, 对象文件导出, 文件格式转换, 漏洞测试, 符号表, 网络安全, 软件移植, 逆向工程, 重定位表, 链接器, 隐私保护, 静态分析