![]() |
図5 実行ファイル感染型ウイルスの感染 |

実行ファイルを勝手に加工
次は実行ファイル感染型ウイルスだ。実行ファイル感染型ウイルスは,その名が示す通り,ファイル名に.comや.exeなどの拡張子が付いている実行ファイルに感染する。ここでは,Windowsプログラムを例に,実行ファイル感染型ウイルスのしくみを見ていこう。感染のしくみは単純だ。ユーザーが誤ってウイルスに感染したプログラムを実行すると,ウイルスはパソコン内にあるほかのプログラム・ファイルを探して感染を試みる。もし,感染可能なファイルだった場合は,そのファイルを勝手に加工して自分自身のウイルス・コードをコピーするのである。この加工の仕方には,(A)上書き感染型,(B)追記感染型,(C)すき間感染型――の3パターンがある(図5[拡大表示])。
ウイルス・コードで書き換える
Windowsのプログラム・ファイルは,基本的にファイル全体のサイズやプログラム・コードの開始位置などを記述したヘッダー部が最初にあり,そのうしろにプログラム・コードが記述されている。
上書き感染型ウイルスは,このプログラム・ファイルのコード部分を自身のウイルス・コードで上書きするタイプである。単にウイルス・コードで上書きするだけなので,しくみとしては最も単純である。
ただ,このウイルスに感染すると,プログラム・ファイルが壊れて,本来の処理ができなくなる。つまり,感染したプログラムをユーザーが実行すると,本来のプログラムは実行されずに,ウイルス・プログラムだけが動く。この結果,ユーザーはそれがウイルスかどうかはすぐにはわからないとしても,なにか異変が起こっていることは,すぐに気づくだろう。
感染しても元のプログラムが動く
上書き感染型から一歩進んだのが,追記感染型ウイルスである。
これは,感染対象のプログラム・コードを書き換えるのではなく,プログラム・ファイルの最後にウイルス・コードをくっつけるタイプだ。さらに追記感染型ウイルスは,元のプログラム・ファイルのヘッダー部分も書き換える。
具体的には,ヘッダー部分に元々書かれていた「実行開始位置はXXX(元のプログラムの先頭)」という情報を「実行開始位置はZZZ(ウイルス・プログラムの先頭)と書き換えるのだ。これで,元のプログラムが実行される前に,まずウイルス・コードが実行されるようになる。
また,ウイルス・コードの最後には,元のプログラムの実行開始位置に戻るように記述されている。すると,感染したプログラムは,ウイルスのコードを実行したあとで,本来のプログラムを実行するようになる。
この結果,本来のプログラムがきちんと動くので,ユーザーはウイルスに感染したことに気づきにくくなる。ただ,追記感染型ウイルスに感染したプログラムは,ファイルのサイズが元のファイルより大きくなる。
最後は,すき間感染型ウイルスである。これは追記感染型の発展形といえる。実はプログラム・ファイルの中身を詳しく探っていくと,プログラム・コードなどの情報がぎっしりと詰まっているわけではなく,意味のないデータ(例えば0が並んでいる)が入っている部分が見つかることがある。すき間感染型ウイルスは,こうした部分を探し出して,その部分に自分自身のコードを上書きするのである。この結果,元のプログラムは動作し,ファイル・サイズも変わらないのに,ウイルスに感染したファイルができる。
ただし,このタイプは感染対象のファイルにうまい具合にすき間があることが前提になる。したがって,適当なすき間がないプログラム・ファイルには感染できない。
![]() |
図6 スクリプト型ウイルスの感染のしくみ |
データに感染するマクロウイルス
ウイルスは実行ファイルだけではなく,データ・ファイルにも感染する。それが,マクロウイルスなどの“スクリプト型ウイルス”である。スクリプト型ウイルスの感染のしくみは以下のようになる(図6[拡大表示])。ユーザーがウイルス入りのデータ・ファイルを開くと,このデータ・ファイルに対応したアプリケーションがデータ・ファイルに書かれているスクリプトを実行する。これによりウイルスが起動し,自分自身のスクリプトをほかのデータ・ファイルにも追加(あるいは上書き)して,感染する。
このようにスクリプト型ウイルスは,実行ファイルではなくデータ・ファイルに感染するため,実行ファイル感染型ウイルスとはかなり違う印象を受けるかもしれない。しかし,実は大した違いはない。データ・ファイルに感染するといっても,結局そのデータ・ファイルは特定のアプリケーションが実行できるプログラム・コードを含んだファイルである。要するに,実行する瞬間には全体としてプログラムとして動いているわけで,そういう意味では実行ファイル感染型ウイルスと本質的にはなにも変わらない。
これを如実に表している例として「マクロウイルスの標準テンプレートへの感染」というのがある。例えば,Word文書に感染するマクロウイルスの場合,ユーザーが作ったデータ・ファイルだけでなく,Wordが起動する際に最初に読み込む標準テンプレートという特別なファイルに感染する場合がある。すると,アプリケーションであるWordが起動されるごとに,マクロウイルスが実行され,Wordの文書ファイルを開いたり保存したりするごとに,ほかの文書ファイルに感染を広げる。つまり,あたかもWordのアプリケーション自体にウイルスが感染しているように振る舞うのだ。