●External Programs
ちゃんとマニュアルを読んでないのでアレですが、外部参照しているプログラムの一覧です。
DLLが表示されていますが、.exe他の形式でも、参照していれば表示されるかもしれません。
●Function Call Graph
関数単位での呼び出し元、呼び出し先の関係を図示する機能です。
呼び出しの相関関係を視覚的に捉えることができるため、各関数の機能を解析した後に見ることで、どのような処理を呼び出しているか、などを把握することができます。
●Function Graph
関数の中のコードを、フローチャートのようにブロックに分け、矢印で処理の流れを表示する機能です。
関数の中身の処理の流れを把握し、その関数の目的を理解するうえで、こういった可視化は個人的には非常に有効だと思っています。
他のツールでは、IDA Proがこの機能を実装しており、当ソフトの目玉の一つとなっています。
(個人的には、グラフビューがあるのもIDA Proの有償版のネームドライセンスを購入している理由の一つになっています。)
この機能とデコンパイラの機能がこのツールを利用する理由になってもおかしくない、というくらいのお便利機能ですよ。
IDA Proと比べて惜しい点がいくつかありました。
まず、関係性を示す線が重なってしまうことがあります。特に、複雑な処理になるとその傾向が顕著になります。このため、フローの流れが良く分からなくなるときがあります。
また、処理が長い関数の場合、結構もっさりと重くなります。仮想マシンの関係上、少しスペックは落ちるのですが、同じ環境で動いているIDA Proのグラフビューと比べても、顕著に重いです。これは、どうしてもマルチプラットフォームにした関係で、Javaから描画までいくつもの機能を経由しているためだと思われます。
また、IDA Proの場合、デバッガ機能があるため、EIPが分岐の箇所まで来た際、現在の条件でどちらの分岐にいくかを点滅で示してくれます。Ghidraはまだデバッガ自体がないので、条件分岐にさしかかった場合にどちらにいくかの判断は、アナリストのコードの読解力に依存します。
(つまり、アナリストのスキル次第・・・と煽ってみる。私は自信ないので、素直にIDA使うかな。)