GhidraでBinDiffする

はじめに

どうもこんにちは、morimolymolyです。 最近は完全に体調を崩してしまいました。 さて、今日はGhidraでBindiffする方法を伝授いたします。

背景

2016年03月22日報道のリリースによると、GoogleによりBindiffが無償化されたようです。

www.zynamics.com

また、これに伴いBindiffに必要なExportファイルをGhidraやBinary Ninjaで生成できるツールも公開されました。

github.com

GhidraでのBinExport方法

まず、binexportに必要なバージョンのGhidraをインストールします。 binexportのZIPファイルをReleaseからダウンロードします。 その後はGhidraを立ち上げて、「File→Install Extensions」からBinExportを選択します。

次に、検体をインポートした後に自動解析にかけます。 最後に検体のディスアセンブラ画面を閉じて、検体を右クリックしてExportを選択します。 ここで注意したいのは、Binary BinExport (V2) for BinDiffを選択することです。

これでBinExportは成功します。

BinDiffしてみる

BinDiffの使い方は省きますが、難しいところはないでしょう。

とある検体とバージョンの違う検体のBinDiff結果

同じバージョンのBinDiff結果

CFGレベルでも命令列レベルでも比較ができるので、非常に便利ですね! IDA Proなしでここまでできるのであれば文句はありません!

おわりに

いかがでしたか。 GhidraでBinDiffをやってみました。 実際、私の現状ではBinDiffを使う機会というのが少ないのですが、特定のマルウェアを追いかけている際に、バージョンごとにどのようにことなるのか大雑把に測るには丁度いいツールだと思います。