
ヒューリスティック分析と支配木の可視化を用いて、バイナリ内の難読化コードと制御フローの平坦化を自動検出するIDAプラグイン。
著者: mcdulltii
難読化されたコードやその他のステートマシンを自動検出
バイナリ内の難読化されたコードやステートマシンを自動検出するスクリプト。
実装はIDA 7.4+ (Python3)に基づいています。Binary Ninja実装の詳細については、以下のブログ記事を参照してください:
ヒューリスティック値は上記のブログ記事に基づいて生成され、(All Functionsモードで実行時)ヒューリスティックの複雑さに基づいて上から下にソートされます。
バイナリ内の見つかったすべての関数の支配木をプロットする再帰的な性質のため、実装と実行時のオーバーヘッドは高くなりますが、スレッド化は実装されています。
PyQtを使用してプラグインを可視化することで、ユーザーはバイナリ上のヒューリスティック関数分析をさらにカスタマイズできます。
PyQt5
obfDetectディレクトリとobfDetect.pyをIDAプラグインディレクトリにコピーします。
IDAがバイナリのロードを正常に完了すると、スクリプトはIDC/Pythonコンソールにバナーを出力します。
スクリプトは以下のようにFileツールバーから実行できます。または、Ctrl-Shift-Hでも実行できます。

出力テーブルの関数名はnキーを使用して名前変更でき、関数アドレスで指定されたIDAの関数名が更新されます
エクスポートファイル名入力ボックスをクリックすると、ファイル選択ポップアップが開き、カスタム保存場所に移動できます
Runボタンをクリックして解析を開始Export filename入力ボックスをクリックしてエクスポート場所を選択し、Exportボタンをクリックしてテーブルをcsv形式でエクスポート

