はじめに パッカー(packer)とは、実行ファイルを実行できる形式のまま圧縮(暗号化)するツールであり、UPX、FSG、tElockなど様々なものがあります。しかし、種類は違えどパッカーの基本的動作原理はほとんど同じで、「ターゲットとなる実行ファイルを圧縮(or暗号化)して、プログラムの先頭に展開(or復号化)ルーチンを付加する」だけです。こうすることにより、プログラムが実行されたら一番最初に展開ルーチンが実行され、本来の実行ファイルのデータをメモリ上に復元してプログラムが処理されることになります。 それで、今回はそのパッカーを作成してみようというわけですが、パッカー作成に関して大いなる壁になるのは「実行ファイルの先頭に付加する展開コードはアセンブリ言語で書かなければならない」という事態です。 例えば、暗号化処理がビット反転だったなら、アセンブリ言語でも簡単に復号化処理を書くことができま