
FLAREチームによるIDA Proユーティリティ
Code Grafter は、IDA Pro の Bochs IDB モード を使用して、Windows API 関数をインポートするコードをエミュレートできるようにする IDA Python スクリプトです。Bochs IDB モードのようなエミュレーション環境は、インポートされた関数を解決またはエミュレートしないため、特定のコードでエミュレーションを使用できず、例外が発生します。Code Grafter は、オペコードとデータを挿入してインポートされた Windows API 関数の小さなサブセットを実装することで、Windows API 関数のサブセットに対してこの問題を解決します。Code Grafter は、文字列デコードやマルウェアアンパックに一般的に関連する、単純な実装を持つ関数を対象としています。特にこれらの種類のコードで Bochs IDB モードを使用できるようにすることで、アンチリバースエンジニアリングやサブプロセスデバッグなどの問題に対処することなく、カジュアルに文字列のデコードやペイロードのアンパック/ダンプが可能になります。
ファイル function_replacements.c には、単純な文字列デコードやマルウェアアンパックルーチンに関連するいくつかの関数のコンパクトな C 実装が含まれています。これは参考として提供されています。
function_replacements.c をコンパイルした後、関連する関数オペコードは、mykutils.py (flare-ida リポジトリの /python/flare にある) の emit_fnbytes_python() を使用して抽出されました。これらのオペコードは、code_grafter.py (同じく /python/flare にある) の関数実装ライブラリに Python 文字列として追加されました。