2017-07-31 12 views
1

radare2を使用してバイナリ(マルウェア)のフルコントロールフローグラフを取得したいとします。
私はSOの別の質問からthis postを追跡しました。 agの代わりに、1つの関数のグラフだけでなく、バ​​イナリ全体の制御フローグラフを与える別のコマンドがあるかどうかを質問したいと思いました。 、あなたはradare2をダウンロードしてインストールした後Radare2から完全なバイナリコントロールフローグラフを取得

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

あなたのバイナリを開き、aaaコマンドを使用して、その上で分析を実行します。

+2

たぶん、あなたはhttps://reverseengineering.stackexchange.com/に尋ねるべき –

+1

この質問は[SEリバースエンジニアリングウェブサイト](https://reverseengineering.stackexchange.com/)に転送する必要があります。 – perror

答えて

1

まず、gitリポジトリからradare2をインストールし、最新バージョンを使用してください:

radareのほぼすべてのコマンドの後に?を追加すると、サブコマンドが出力されます。あなたはagCコマンドが出力を探している

[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... 

:たとえば、あなたはag?を追加することによって、あなたはそのサブコマンドを発見することができるようにagコマンドとそのサブコマンドは、出力に視覚的なグラフをあなたを助けることができることを知っていますプログラムのフルコールグラフはdot形式です。

[0x004049a0]> agC > output.dot 

dotユーティリティはsudo apt-get install graphvizを使用してインストールすることができる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 
+0

その説明とあなたが見つけたコマンドをありがとうございます。それは私の質問に答えるが、Pythonオブジェクトでそのグラフを取得できるかどうかを尋ねて、解析を実行できるようにしたいと思った。 –

+1

python r2pipeを使うと、pythonのradareを扱う最も簡単な方法です。ほぼすべてのコマンドに 'j'を付け加えて、Json出力を得る。リポジトリの例を見てください:https://github.com/radare/radare2-r2pipe/blob/master/python/README.md – Megabeets

+1

クールですが、Graph/DiGraphオブジェクトとして入手できますか?すべてのノードとエッジが接続されていますか? –

関連する問題