2

我们需要为一些自定义的中间语言代码创建一个 CFG。我们目前正在使用 Qt + graphviz - CFG 看起来像屁股。

具体来说,我们似乎无法弄清楚我们如何能够

  1. 将“流”(从上到下)放入图中,并且

  2. 使连接线环绕其他图形节点。

无论如何,我们都在欣赏令人敬畏的 IDA CFG - 并注意到 IDA 似乎根本没有使用 graphviz!GV 为我们的项目添加了 x MB 的依赖项,我们很想摆脱它。

所以问题是:有人知道 IDA 用于图形渲染和排序吗?

我们考虑编写一个 IDA 插件来使用图形功能,但这对于我们想要做的事情来说似乎有点过头了。

4

2 回答 2

2

最后我检查了他们使用 (Q) WinGraph ,您可以从此页面获取他们修改后的源代码(基于VCG 工具)。

类似的东西是yED,您可能还想检查一下,还有一些使用TouchGraph的IDA 脚本(这似乎不是免费的)。

于 2013-09-15T15:44:49.850 回答
2

我认为 IDA 使用自己的图形库(尽管您可能会问 Ilfak Guilfanov 对此的明确答案)。

您要查找的内容称为“Sugiyama 图形布局算法”(请参阅​​:分层图形绘制)。

在 citeseerx 上有一篇关于这个问题的非常有趣的论文(特别关注 CFG)(请参阅:代码流可视化的图形布局)。

如上述论文所述,OGDF ( http://www.ogdf.net/ ) 提供了 Sugiyama 布局算法 ( http://www.ogdf.net/doc-ogdf/classogdf_1_1_sugiyama_layout.html ),尽管它可能需要一些调整.

希望有帮助!

于 2013-09-15T14:50:32.133 回答