
LibObjectFileを使用してシェルコードをELFに変換するシンプルなdotnet Native AOTアプリ
シンプルなdotnet Native AOTアプリで、[LibObjectFile] を使ってシェルコードをELFに変換します。
32ビットと64ビット(x86、x64)の両方のシェルコードに対応しており、32ビットまたは64ビットのELFを生成します。
[リリース] は linux-x64 と win-x64 の両方でコンパイルされています。
Native AOT形式にコンパイルされており、その素晴らしさを実証しています(ただし、いくつかの依存関係がリフレクションを使用しているため、工夫しないとトリミングされてしまい、面倒でした :D)。ダウンロード可能な[リリース]バイナリは、dotnet依存関係のないネイティブバイナリです!(そのまま実行してお楽しみください)
Native AOTコンパイル済み、dotnet SDK 8.0.100-preview.3.23178.7を使用。
より小さなバイナリを生成できるため、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ビットELFに変換します(シェルコードの開始オフセットを66バイト目に設定):
sc2elf -a 32 -o 66 -p C:\shellcode.bin