

drow は、ELF 実行可能ファイル(ビルド後)のエントリポイントにコードを注入しフックするためのコマンドラインユーティリティです。未修正の ELF 実行可能ファイルを入力として受け取り、実行時に動作するユーザー提供のペイロードが埋め込まれた修正済み ELF を出力します。
Drow は以下の手順で新しいパッチ済み ELF を作成します:
sh_size とプログラムヘッダの p_memsz/p_filesz をユーザー提供のペイロードのサイズだけ拡張するsh_offset とプログラムヘッダの p_offset を修正する(ペイロードと小さな「ステージャースタブ」のためのスペースを確保するため、セクションとセグメントを下に移動する)e_shoff、e_phoff など)を修正するe_entry(ELF エントリポイントオフセット)を変更して注入コードを指すようにするユーザー提供のペイロードの注入に加えて、drow はペイロードの先頭に付加される小さなコードスタブも注入します。このスタブはペイロードを呼び出すように設計されています。ペイロードが呼び出し元に戻るように書かれている場合、ペイロードが戻った後にステージャーは _start にテールコールし、プログラムが意図したとおりに実行されるように復元します。
gcc と scons をインストールしてください。その後、ディレクトリのルートから scons を実行します。
drow のビルドに加えて、このプロジェクトは stdout に出力するだけの Linux x86-64 ペイロード rappers_delight.bin もビルドします。これはテストに使用できます。現在、drow は x86-64 をターゲットとする ELF64 ファイルでのみ動作します。
この分野では多くのオープンソースの取り組みが行われています。以下のプロジェクトや関連資料もぜひご確認ください: