IDA用于绘图的是什么?

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

具体来说,我们似乎无法弄清楚我们怎么做

  • 将“流”(从上到下)放入图中,然后

  • 使连接线绕其他图形节点移动 .

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

问题是:有没有人知道IDA用于图形渲染和排序的内容?

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

回答(2)

2 years ago

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

你要找的是"Sugiyama graph layout algorithm"(见:Layered graph drawing) .

关于citeseerx的这个问题(尤其关注CFG)有一篇非常有趣的论文(参见:Graph Layout for Code Flow Visualization) .

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

希望有所帮助!

2 years ago

最后我检查了他们使用过(Q)WinGraph,你可以从this page(基于VCG tool)获得他们修改过的来源 .

类似的东西是yED,您可能还想查看并且few IDA scripts也使用TouchGraph(似乎不是免费的) .