2013-09-10 1 views
2

Нам нужно создать CFG для какого-либо специального кода промежуточного языка. В настоящее время мы используем Qt + graphviz - и CFG выглядят как задница.Что используется IDA для графического отображения?

В частности, мы не можем показаться, чтобы выяснить, как мы можем

  1. получить «поток» (сверху вниз) в граф, и

  2. делают соединительные линии Обойдите другие узлы графа.

В любом случае, мы любовались удивительной IDA CFGs - и заметил, что IDA, кажется, не использовать Graphviz на всех! GV добавляет x MB зависимости к нашему проекту, и мы хотели бы избавиться от него.

В том числе: кто-нибудь знает, что использует IDA для рендеринга и сортировки графа?

Мы рассмотрели возможность создания плагина IDA для использования функции графического отображения, но это немного похоже на то, что мы хотим сделать.

ответ

1

Я думаю, что IDA использует свою собственную библиотеку графов (хотя вы можете спросить Ильфака Гильфанова об окончательном ответе).

То, что вы ищете, называется «алгоритм компоновки графа Sugiyama» (см.: Layered graph drawing).

Существует действительно интересная статья об этой проблеме (особенно для CFG) на citeseerx (см.: Graph Layout for Code Flow Visualization).

Как указано в вышеупомянутой статье, OGDF (http://www.ogdf.net/) предоставляет алгоритм компоновки Sugiyama (http://www.ogdf.net/doc-ogdf/classogdf_1_1_sugiyama_layout.html), хотя для этого может потребоваться некоторая настройка.

Надеюсь, что это поможет!

+0

Отличный ответ. Знаете ли вы, как мы собираемся выгружать выходные графы потока подпрограмм серваля в Ida pro? спекуляция мой вопрос здесь: 'http: // stackoverflow.com/questions/28619663/ida-pro-gragh-output-batch-mode' – Amir

1

Последнее, что я использовал (Q) WinGraph, вы можете получить их модифицированный источник от this page (основанный на VCG tool).

Нечто подобное yED, которые вы также можете проверить & есть few IDA scripts, которые используют TouchGraph, а также (что, кажется, не быть свободным).