脱殻原理をUPXを使用して説明 (脱殻Hello World)
UPXは広く利用されている実行ファイル圧縮ツールであり、実行ファイルをより小さくすることでファイルサイズを削減できます。脱殼はUPXで圧縮された実行ファイルを元の実行ファイルに戻すプロセスです。
UPX脱壳の仕組み:
- UPXは、実行可能ファイルを圧縮するときに、元のバイナリを多数のブロックに分割し、各ブロックを個別に圧縮処理して、それらのブロックが単一の塊として格納されます。
- シェルコードを実行する際に、圧縮されたブロックの開始位置とサイズを見つける必要があります。開始位置は通常、実行可能ファイルのファイルヘッダや特定のフラグを解析することによって決定できます。
- 開始位置とサイズに従い、圧縮ブロックをバイナリから抽出する。
- 解凍した圧縮ブロックから元のプログラムファイルを取り出す
「シェルからこんにちは世界」を作成する手順は次のとおりです。
- UPXで圧縮された実行ファイルを展開します。
- ファイルヘッダーやその他のマークに基づいて圧縮ブロックの開始位置とサイズを特定する。
- 実行ファイルから圧縮ブロックを抜き出します。
- 抽出された圧縮ブロックを解凍して、元のファイル形式に戻す。
- 復元された実行ファイルを保管してください。
上記の手順によって、UPXで圧縮された実行ファイルをシェルから取り出し、元のファイルに戻すことができます。