我想使用radare2获得二进制(恶意软件)的完整控制流图
我跟着另一个关于SO的问题this post。我想询问是否有ag
而不是另一个命令给出整个二进制文件的控制流图,而不仅仅是一个函数的图形。
答案 0 :(得分:1)
首先,确保从git存储库安装radare2并使用最新版本:
$ 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
进行安装。
您可以在任何离线dot viewer中查看输出,将输出粘贴到online Graphviz viewer,甚至将点文件转换为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