Ghidraの操作メモ - Windowメニュー(その6) - | reverse-eg-mal-memoのブログ

reverse-eg-mal-memoのブログ

サイバーセキュリティに関して、あれこれとメモするという、チラシの裏的存在。
medium(英語):https://sachiel-archangel.medium.com/

●External Programs

ちゃんとマニュアルを読んでないのでアレですが、外部参照しているプログラムの一覧です。

DLLが表示されていますが、.exe他の形式でも、参照していれば表示されるかもしれません。

 

 

 

●Function Call Graph

関数単位での呼び出し元、呼び出し先の関係を図示する機能です。

呼び出しの相関関係を視覚的に捉えることができるため、各関数の機能を解析した後に見ることで、どのような処理を呼び出しているか、などを把握することができます。

 

 

 

Function Graph

関数の中のコードを、フローチャートのようにブロックに分け、矢印で処理の流れを表示する機能です。

関数の中身の処理の流れを把握し、その関数の目的を理解するうえで、こういった可視化は個人的には非常に有効だと思っています。

他のツールでは、IDA Proがこの機能を実装しており、当ソフトの目玉の一つとなっています。

(個人的には、グラフビューがあるのもIDA Proの有償版のネームドライセンスを購入している理由の一つになっています。)

この機能とデコンパイラの機能がこのツールを利用する理由になってもおかしくない、というくらいのお便利機能ですよ。

 

IDA Proと比べて惜しい点がいくつかありました。

まず、関係性を示す線が重なってしまうことがあります。特に、複雑な処理になるとその傾向が顕著になります。このため、フローの流れが良く分からなくなるときがあります。

また、処理が長い関数の場合、結構もっさりと重くなります。仮想マシンの関係上、少しスペックは落ちるのですが、同じ環境で動いているIDA Proのグラフビューと比べても、顕著に重いです。これは、どうしてもマルチプラットフォームにした関係で、Javaから描画までいくつもの機能を経由しているためだと思われます。

また、IDA Proの場合、デバッガ機能があるため、EIPが分岐の箇所まで来た際、現在の条件でどちらの分岐にいくかを点滅で示してくれます。Ghidraはまだデバッガ自体がないので、条件分岐にさしかかった場合にどちらにいくかの判断は、アナリストのコードの読解力に依存します。

(つまり、アナリストのスキル次第・・・と煽ってみる。私は自信ないので、素直にIDA使うかな。)