コンピュータウイルスについて、皆さんは大体のイメージをもっていても、「コンピュータウイルスについて説明してください」といわれたら、
それについてきちんと説明することは難しいと思います。
コンピュータウイルスとは何でしょうか?
一言でいうと、ユーザーに害を及ぼすプログラム(スクリプト含む)の一つです。
「プログラムとスクリプトの違いは何?」というまた別の問いもありますが、それを説明するともう一つブログがかけてしまうので、それはまた別の機会にしたいと思います。
「ユーザーに害を及ぼすプログラム」は、英語では「malware-マルウェア-」などと言います。malwareの「mal」は「悪」や「異常」を表す接頭語です。
日本語ではこのマルウェアは一般的に「不正なプログラム」と呼ばれています。
「不正」とはいっても、通常のプログラム(ソフトウェア)も、ユーザーに害を及ぼすプログラムも、プログラムであることは一緒です。
プログラムなので、パソコンに入っているOS(基本ソフト)上で許されている動作しかできません。
ただ、その実行結果がユーザーに害を与えるか、有益であるかの違いだけなのです。
これはあくまでも「ユーザー側の主観」の問題です。
こんな感じですね。
●プログラムA → ユーザーにとって有益な実行結果 → 通常のソフトウェア
●プログラムB → ユーザーにとって害のある実行結果 → コンピュータウイルス
ここでは、プログラムBがコンピュータウイルスなわけです。
OSやCPUには許されている動作であっても、その動作がユーザーにとって「悪質」であることが問題なのです。
不正なプログラムというと、OSやCPUの認めていない処理をするプログラムだと考える人がいるかもしれません。
ここではこうした誤解を避けるために、不正なプログラムという言い方を極力避け、「悪質なプログラム」ということにします。
なぜこんな屁理屈のような表現したかをいいますと、これこそがウイルス被害がなくならない原因だからです。
もし、ウイルスが通常のプログラムではなくOSやパソコンのハードウェアに対して何か特別な処理をさせるものだったらどうでしょうか?
その場合は、OSやハードウェアを改良して、はじめのところで不正な処理をさせないようにすれば被害をなくせます。
正しい処理を要求するプログラムだけを実行させるようにすればいいわけです。
ところがウイルスも、個々の処理(OSやハードウェアに要求する処理)は、いたって正当なのです。
OSは、今、発行されたシステムコール(プログラムからOSへの命令)がウイルスからのものなのか、通常のプログラムからのものなのかは全く分かりません。
コンピュータはいわれた通りに処理するだけです。
処理の結果、害を及ぼすものがウイルスをはじめとする、文字通り「ユーザーに害を及ぼすプログラム(悪質なプログラム)」なのです。