このプログラムは、32 ビットまたは 64 ビットのシェルコードをロードし、実行またはデバッグできるように設計されています。さらに、必要なシェルコードに基づいて実行可能な PE ファイルを生成できます。これにより、出力バイナリが標準のリバース エンジニアリング ツール (つまり、IDA Pro (無料でも) やデバッガ) で使用できるため、テストが容易になります。
リリースバイナリが利用可能です。このツールのデモは YouTube でご覧いただけます
このプログラムは、シェルコードを操作するためのいくつかのオプションを、使用法別に整理して提供します。
グローバル引数
シェルコードのデバッグ
PEファイルの作成
唯一必要な引数は、シェルコードを含むファイルへのパスを指定することです。これを行うには、 -f
引数を使用します。これはメモリにコピーされて実行されます。さらに、 -ep
引数を使用して、エントリ ポイントを X バイト単位で調整できます。これにより、バイナリ BLOB の先頭で実行を開始しないシェルコードが可能になります。最後に、 -bp
シェルコードの前にブレークポイントを挿入するかどうかを決定します。これは、INT3 である0xCC
バイトを通じて行われます。これにより、必要に応じてコマンド ライン引数を定義して、デバッガでプログラムを実行できるようになります。ブレークポイントを挿入すると、シェルコードが実行される前にデバッガーが実行を中断できるようになります。デバッガで実行していない場合は、プログラムがクラッシュする原因となるため、ブレークポイントを挿入しないでください。
-pe
引数を使用すると、基本的にシェルコードをラップする PE ファイルを作成できます。シェルコードは.text
セクションに配置されます。 -ep
引数が使用されない限り、エントリ ポイントはセクションの先頭として定義されます。この引数はセクションの先頭からのオフセットを定義し、PE ファイルのエントリ ポイント (つまり、AddressOfEntry フィールド) を更新するために使用されます。さらに、 -64
引数を使用すると、64 ビット シェルコード用の 64 ビット PE ファイルを生成できます。結果の PE ファイルは、IDA Pro、Ghidra などの一般的なリバース エンジニアリング ツール、または x32dbg/WinDbg/ などのデバッガーを介して分析できます。
-d引数を使用すると、SCLauncher は.contentという名前の新しいセクションを作成し、ファイルの内容をこのセクションにコピーします。このセクションは.textセクションの後に続きます。
まだバイナリ状態になっていないシェルコードがある場合は、CyberChef を使用してそのシェルコードを変換し、ファイルとしてダウンロードできます。
以下は、CyberChef 上のバイナリ コンテンツに変換された Exploit-DB のシェルコードの例です。
このプログラムは、Microsoft の C/C++ コンパイラでコンパイルすることを目的としています。無料/コミュニティ バージョンをインストールした後、 Developer Command Prompt
使用して、 cl
使用してコンパイルできます。このコマンドの例は次のようになります。
cl sclauncher.c
これにより、実行可能ファイルsclauncher.exe
が生成されます。