Получение полного бинарного управляющего графического потока от Radare2

Я хочу получить полный граф потока управления бинарным (вредоносным) с использованием radare2.
Я последовал за этим постом из другого вопроса на SO. Я хотел спросить, если вместо ag есть другая команда, которая дает график потока управления всего двоичного файла, а не только график одной функции.

1 ответ

Решение

Прежде всего, убедитесь, что вы установили radare2 из репозитория git и используете новейшую версию:

$ git clone https://github.com/radare/radare2.git
$ cd radare2
$ ./sys/install.sh

После того, как вы скачали и установили radare2, откройте бинарный файл и выполните анализ, используя aaa команда:

$ r2 /bin/ls
 -- We fix bugs while you sleep.
[0x004049a0]> aaa
[x] Analyze all flags starting with sym. and entry0 (aa)
[x] Analyze len bytes of instructions for references (aar)
[x] Analyze function calls (aac)
[x] Use -AA or aaaa to perform additional experimental analysis.
[x] Constructing a function name for fcn.* and sym.func.* functions (aan)

Добавление ? после почти каждой команды в radare будут выводиться подкоманды. Например, вы знаете, что ag Команда и ее подкоманды могут помочь вам вывести визуальные графики, добавив ? в ag вы можете обнаружить его подкоманды:

[0x00000000]> ag?
|Usage: ag[?f]Graphviz/graph code
| ag [addr]             output graphviz code (bb at addr and children)
| ag-                   Reset the current ASCII art graph (see agn, age, agg?)
| aga [addr]            idem, but only addresses
| agc[j] [addr]         output graphviz call graph of function
| agC[j]                Same as agc -1. full program callgraph
| agd [fcn name]        output graphviz code of diffed function
| age[?] title1 title2  Add an edge to the current graph
| agf [addr]            Show ASCII art graph of given function
... <truncated> ...
| agv                   Show function graph in web/png...

Вы ищете agC команда, которая выведет полный граф вызовов программы в dot формат.

[0x004049a0]> agC > output.dot

dot Утилита является частью программного обеспечения Graphviz, которое может быть установлено с помощью sudo apt-get install graphviz,
Вы можете просмотреть свои выходные данные в любом автономном средстве просмотраточек, вставить результат в интерактивное средство просмотра Graphviz и даже преобразовать файл точек в формат PNG:

$ r2 /bin/ls
[0x004049a0]> aa
[x] Analyze all flags starting with sym. and entry0 (aa)
[0x004049a0]> agC > output.dot
[0x004049a0]> !!dot -Tpng -o callgraph.png output.dot
Другие вопросы по тегам