我们需要为某些自定义中间语言代码创建CFG。我们目前正在使用Qt + graphviz - 而CFG看起来像屁股。
具体来说,我们似乎无法弄清楚我们如何能够
将“流程”(从上到下)放入图表中,
使连接线绕其他图形节点运行。
无论如何,我们正在欣赏令人敬畏的IDA CFG - 并注意到IDA似乎根本没有使用graphviz! GV为我们的项目增加了x MB的依赖项,我们很乐意摆脱它。
所以问题是:有没有人知道IDA用于图形渲染和排序的内容?
我们考虑过编写一个IDA插件来使用图形功能,但对于我们想要做的事情,这似乎有点过头了。
答案 0 :(得分:2)
我认为IDA使用自己的图形库(尽管你可能会问Ilfak Guilfanov对此有明确的答案)。
您正在寻找的内容称为" Sugiyama图布局算法" (见: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),尽管可能需要进行一些调整。
希望有所帮助!
答案 1 :(得分:1)
最后我检查过他们使用了(Q)WinGraph,您可以从this page获取修改后的来源(基于VCG tool)。
类似的内容yED您可能还想查看&有一个few IDA scripts也使用TouchGraph(似乎没有免费)。