You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ghidra中导出控制流图?含JPG保存与API导出PNG方法

Ghidra控制流图导出方法:JPG手动保存与PNG API导出

一、手动保存为JPG格式

  • 打开目标函数的Function Graph窗口后,点击窗口右上角的三点菜单按钮,选择Export Graph选项。
  • 在弹出的导出对话框中,选择格式为JPEG,指定保存路径和文件名后,点击确认即可完成导出。
  • 快捷操作:激活Function Graph窗口后,按下Ctrl+Shift+E(Windows/Linux)或Cmd+Shift+E(Mac)可快速调出导出对话框。

二、通过API导出为PNG格式

Ghidra提供官方API支持控制流图的PNG导出,你可以编写Ghidra脚本实现批量导出,示例代码如下:

示例脚本(Java)

import ghidra.app.services.GraphService;
import ghidra.graph.viewer.GraphViewer;
import ghidra.program.model.listing.Function;
import ghidra.util.graph.GraphExporter;
import java.io.File;

public class ExportFunctionGraphsToPNG extends GhidraScript {
    @Override
    protected void run() throws Exception {
        // 获取Graph服务实例
        GraphService graphService = state.getTool().getService(GraphService.class);
        if (graphService == null) {
            println("无法获取GraphService服务");
            return;
        }

        // 遍历当前程序的所有函数
        for (Function func : currentProgram.getListing().getFunctions(true)) {
            // 获取函数对应的图查看器
            GraphViewer<?, ?> viewer = graphService.getGraphViewer(func);
            if (viewer == null) {
                println("跳过函数 " + func.getName() + ": 无法获取控制流图查看器");
                continue;
            }

            // 定义输出文件路径(请替换为你的实际路径)
            File outputFile = new File("/your/output/directory/" + func.getName() + ".png");
            try {
                // 导出为PNG格式
                GraphExporter.exportGraph(viewer, outputFile, "PNG");
                println("成功导出: " + outputFile.getAbsolutePath());
            } catch (Exception e) {
                println("导出失败 " + func.getName() + ": " + e.getMessage());
            }
        }
    }
}

使用说明

  1. 将上述代码保存为.java文件,导入到Ghidra的Script Manager中。
  2. 确保当前已打开目标程序,运行脚本前替换代码中的输出路径为你有权限写入的目录。
  3. 运行脚本后,程序中所有函数的控制流图会以PNG格式导出到指定目录。

内容的提问来源于stack exchange,提问作者an_na

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:04:50