加殻プログラムの原理をかんたんに解説
UPX のような加殻プログラムを聞いたことがある方は多いと思います。しかし、その仕組みをご存じでしょうか? 自分で書いてみたことはありますか? 難しそうに思えるかもしれませんが、実はその原理はとても単純です。以下、風來がご説明いたします〜 加殻プログラムを作る最初のステップは、加殻したいプログラムのバイナリファイルを手に入れることです。コンピューター上のファイルはすべてバイナリファイルだということは、みなさんご存じですよね? バイナリファイルは 0 と 1 だけで構成されています。では、手に入れたバイナリファイルをどうするのでしょうか? もちろん暗号化します。いちばん簡単な暗号化方法は、すべてのビットを反転させることです。つまり 0 は 1 に、1 は 0 に変えます。ただ、暗号化したファイルをそのまま実行することはできないので、次は第 2 段階に進みます。 第 2 段階も実はとても単純です。暗号化したファイルの中に、ファイルを復号できるプログラムのバイナリコードを埋め込みます。プログラムが起動すると、自動的にファイルを復号します。ただし、この復号は一時的なものです。ディスク上のファイルを復号するのではなく、メモリ上に置かれた内容を復号します。こうすれば、プログラムが終了した時点で元の暗号化された状態に戻ります。 これは昨日ふと思いついた加殻の方法です。理論上は動くはずです @@