shelf
Shelf release 3.0.5
標準のELFファイルをスタンドアロンシェルコードに変換します。次のドキュメントを読んで、このプロジェクトの例を見てください。
github
ピピ
pip install py_shelfPythonライブラリはELFを解析し、Shelf(Shellcode Elf)と呼ばれる単純な再配置可能なファイル形式を作成します。
ミニローダーは、棚のエントリポイントとして挿入されます。
ミニローダーは棚をロードして再配置し、それを実行します。特別な要件はありません。ライブラリには、コンパイルされたミニローダーとリソースが含まれています。
以下の図は、形式を説明しています(ブラウザでのみ動作します)
classdiagram
ShellCodeEntryPoint- |> Miniloader
ShellCodeEntryPoint:プレミニローダーロジックを含むシェルコード
Miniloader - |>移転テーブル
Miniloader:移転テーブルを解析するためのすべてのロジックが含まれています
Miniloader:完全に独立しています
再配置テーブル - |>オプションのフック
再配置テーブル:シェルコードランタイムの再配置に必要なテーブルが含まれています
オプションのフック - |>棚
オプション:フック:以下のドキュメントのフックの詳細を読む
オプション:このセクションはオプションであり、フックが使用されている場合にのみ存在します
シェルフ:シェルコードエルフ - これは、シェルコードに変換されるコンパイルされたバイナリです
シェルフ:このバイナリは、オペコードのみに剥がされます
シェルフ:再配置テーブルを使用して完全に再配置できます
このプロジェクトは、ELFを独立したシェルコードに変換することを目的としています。したがって、ローダーはメモリを割り当てることはなく、シェルコード形式は梱包されていません。たとえば...
(( void ( * )()) shellcode )();以下の例に従ってください
これが適切に機能するには、一部のコンピレーションフラグが必要です。 -fpieと-staticを使用してバイナリをコンパイルする必要があります。
シェルコードは、シェルコードを作成するために、シンボルがなく、ELF情報のみがオプコードを持たない剥がれたバイナリであり、このライブラリにはELF情報を含むバイナリが必要です。したがって、このライブラリを使用する前にバイナリを剥がさないようにしてください
MIPS Big Endianの簡略化されたメーカーコマンド
gcc example . c - fno - stack - protector - fPIE - fpic - static - nostartfiles -- entry = main - o binary . out
python - m shelf -- input binary . out makefile
example.c
提供されたシェルコードローダーを使用してシェルコードをテストできます
qemu-mips ./shellcode_loader ./myshellcode.outシェルフローダーライブラリを使用してシェルコードをテストすることをお勧めします。
次のリンクについては、githubページでのみ動作します