首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Radare2获取完整的二进制控制流图

从Radare2获取完整的二进制控制流图
EN

Stack Overflow用户
提问于 2017-07-31 23:06:21
回答 1查看 7.7K关注 0票数 4

我想得到一个使用radare2的二进制程序(恶意软件)的完整控制流程图。

我跟踪了这个职位的另一个问题。我想问的是,是否有另一个命令代替了ag,它给出了整个二进制的控制流图,而不仅仅是一个函数的图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-13 14:44:02

首先,确保从git存储库安装radare2并使用最新版本:

代码语言:javascript
复制
$ git clone https://github.com/radare/radare2.git
$ cd radare2
$ ./sys/install.sh

下载并安装radare2之后,打开二进制文件并使用aaa命令对其执行分析:

代码语言:javascript
复制
$ r2 /bin/ls
 -- We fix bugs while you sleep.
[0x004049a0]> aaa
[x] Analyze all flags starting with sym. and entry0 (aa)
[x] Analyze function calls (aac)
[x] Analyze len bytes of instructions for references (aar)
[x] Check for objc references
[x] Check for vtables
[x] Type matching analysis for all functions (aaft)
[x] Propagate noreturn information
[x] Use -AA or aaaa to perform additional experimental analysis.

在radare中的几乎每个命令之后添加?将输出子命令。例如,您知道ag命令及其子命令可以帮助您输出可视图形,因此通过将?添加到ag中,您可以发现它的子命令:

代码语言:javascript
复制
[0x00000000]> ag?
Usage: ag<graphtype><format> [addr]  
Graph commands:
| aga[format]             Data references graph
| agA[format]             Global data references graph
| agc[format]             Function callgraph
| agC[format]             Global callgraph
| agd[format] [fcn addr]  Diff graph
... <truncated> ...

Output formats:
| <blank>                 Ascii art
| *                       r2 commands
| d                       Graphviz dot
| g                       Graph Modelling Language (gml)
| j                       json ('J' for formatted disassembly)
| k                       SDB key-value
| t                       Tiny ascii art
| v                       Interactive ascii art
| w [path]                Write to path or display graph image (see graph.gv.format     and graph.web)

您正在搜索agCd命令,它将以dot格式输出程序的完整调用图。

代码语言:javascript
复制
[0x004049a0]> agCd > output.dot

dot实用程序是Graphviz软件的一部分,它可以使用sudo apt-get install graphviz安装。

您可以在任何脱机查看器中查看输出,将输出粘贴到在线图形查看器中,甚至将点文件转换为PNG:

代码语言:javascript
复制
$ r2 /bin/ls
[0x004049a0]> aa
[x] Analyze all flags starting with sym. and entry0 (aa)
[0x004049a0]> agCd > output.dot
[0x004049a0]> !!dot -Tpng -o callgraph.png output.dot
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45426577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档