Некоторые умные люди на васме регулярно упоминают "граф". Расскажите, что это такое, для чего оно нужно и где об этом можно почитать?
intel_x128 программа с переходами может быть представлена в виде графа. в узлах будут последовательные участки между метками и переходами. переходы будут ребрами. так представляют дизасмы ида и иммунити дебугер. удобно, наглядно. для автоматического анализа разветвленного кода рекомендуется. только теория графов для данной конкретной цели мало нужна. такое представление только задля анализа запутанного кода по сетке переходов.
Граф это сруктура обьекта. Если просто - все возможные варианты исполнения кода в виде структуры. Пример можна скачать тут(старый не полноценный двиг, но большинство задач решает): http://www.woodmann.com/collaborati...Control_Flow_Graph_Creation_And_Build_Engine)
этот тип представления исполняемого кода, тыщу лет имеет собственное название - CFG - control flow graph. Первоначально разработан для нужд оптимизации в компиляторах (см. Ахо и компания). Сейчас его используют для многих нужд, к примеру морфа (http://morpher.com/ обфусцирующий компилятор), поиска неэкспортируемых имен, анализ и детектирование малвари, деобфускация и тд. В общем довольно удобное представление бинарного кода. В теории делится на interprocedural и intraprocedural. Вообщем по большей части достаточно внутрипроцедурного графа. Ну и не стоит забывать и про другие графы анализа - DFG и PFG. Но они более сложны для построения (нужна по сути эмуляция) и в принципе применимы для слайсинга (именно slicing) и продвинутой деобфускации (зависимость по данным и тд).