シェルコードをPEに変換するために[AsmResolver]を使用するシンプルなdotnet Native AOTアプリです。
32ビットと64ビット(x86、x64)の両方のシェルコードがサポートされています -> 32ビットまたは64ビットのPEが生成されます。
[リリース] はlinux-x64とwin-x64の両方向けにコンパイルされています。
これはNative AOT形式にコンパイルされており、それがどれほど素晴らしいかを示しています(それでも、いくつかの依存関係がリフレクションを使用しており、それを騙さないとトリミングされてしまうため、苦労しました :D)。ダウンロード可能な[リリース]バイナリは、dotnet依存関係を一切持たないネイティブバイナリです!(だから、実行するだけで楽しめます)
dotnet SDK 8.0.100-preview.3.23178.7を使用してNative AOTコンパイルされています。
Dotnet SDK 8+が選ばれたのは、より小さなバイナリを生成するためです。
Native AOTコンパイルはdotnet 7バージョンからサポートされています。
ビルドにdotnet 7を使用したい場合は、プロジェクトファイルをnet7.0ターゲットに変更してください -> dotnet 7の方がビルドがはるかに簡単です。
かなり簡単です:
-p, --path [必須。シェルコードファイルへのパス]
-a, --architecture [必須。アーキテクチャ: 32または64(シェルコードに依存)]
-o, --offset [省略可能。シェルコードの開始オフセット(デフォルト0)]
--help [このヘルプ画面を表示]
--version [バージョン情報を表示]
シェルコードを32ビットPEに変換(シェルコードの開始オフセットを66バイト目に設定):
sc2pe -a 32 -o 66 -p C:\shellcode.bin