2

カスタム中間言語コード用に CFG を作成する必要があります。現在、Qt + graphviz を使用しています。CFG はお尻のように見えます。

具体的には、どのようにできるかを理解できないようです

  1. グラフへの「フロー」(上から下へ) を取得し、

  2. 接続線を他のグラフ ノードの周りに配置します。

とにかく、私たちは素晴らしい IDA CFG に感心していましたが、IDA がまったく Graphviz を使用していないように見えることに気付きました! GV は私たちのプロジェクトに x MB の依存関係を追加します。私たちはそれを取り除きたいと思っています。

質問は次のとおりです。IDAがグラフのレンダリングとソートに何を使用しているか知っている人はいますか?

グラフ機能を使用するために IDA プラグインを作成することを検討しましたが、それは私たちがやりたいことに対して少しやり過ぎのようです。

4

2 に答える 2

2

IDA は独自のグラフ ライブラリを使用していると思います (ただし、それについての明確な回答を Ilfak Guilfanov に求めることもできます)。

あなたが探しているのは、「杉山グラフ レイアウト アルゴリズム」と呼ばれるものです (参照:階層化されたグラフの描画)。

この問題 (特に CFG に焦点を当てたもの) に関する非常に興味深い論文が citeseerx にあります (「Graph Layout for Code Flow Visualization 」を参照)。

前述の論文で述べたように、OGDF ( http://www.ogdf.net/ ) は杉山レイアウト アルゴリズム ( http://www.ogdf.net/doc-ogdf/classogdf_1_1_sugiyama_layout.html ) を提供しますが、多少の調整が必要になる場合があります。 .

それが役立つことを願っています!

于 2013-09-15T14:50:32.133 に答える