- ベストアンサー
コンピュータウイルスの手口について
カデコリ違いなのですが、私C/C++しか教養が無いのでこちらで質問させていただきます。 ウイルスにはバイナリにくっ付いて無意識のうちにユーザーに実行させるものがあると聞きます。しかし、私にはこの概念がいまいち良く分からないのです。実行ファイルは多種多様であり、ウイルスがそれらの隙間に溶け込むには人工知能さながらの柔軟性が必要になるのではないでしょうか。ウイルスがOS付随のファイル等、普遍的なファイルにばかりくっ付くのならば納得できます。しかし、スキャンを掛けてみると、一般的でない実行ファイルにある日くっ付いていたりするのです。 原理がまったく分かりません。ご存知の方いましたら是非ご教授願います。 因みにアセンブリならば多少理解できます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
プログラムを解析して、処理の途中に侵入する必要はありません。 ターゲットプログラムの先頭(exeファイルの中で最初に実行される 機械語)を書き換えて、自分が仕込んだプログラム命令にJumpさせる ようにします。 自分が仕込んだプログラムでウィルス活動を実行後、 最初に書き換えた元の機械語命令を復元し、 再度プログラム先頭から実行すれば、ユーザに気づかれません。
その他の回答 (2)
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
ある OS 用の実行ファイルというのは、 OS の決まりに沿った、「決まり切った」 始まりの仕方をしなければなりません。 普通、そういうところまでは、ユーザー のプログラムには書き込みませんが、その 「特定 OS 用開発環境」のリンカなりが、 「スタートアップ」という形で、勝手に くっつけます。 ですから、「あらゆる形の実行ファイル」 に対応する必要はなく、(例えば、)Windows のスタートアップ部分にだけ対応すれば それで良いわけです。
お礼
つまりSystem32内のdllに対する命令部分の狭間に溶け込む余地があるということですかね。 分かりました。優れた開発者ならば問題なく実現出来そうな気がします。 回答有難うございました。
- hana-hana3
- ベストアンサー率31% (4940/15541)
>ウイルスがそれらの隙間に溶け込むには人工知能さながらの柔軟性が必要になるのではないでしょうか。 そんな生き物みたいに考えてはいけません。 単なるプログラムなので、プログラムされた増殖方法に従ってターゲットにするファイルを探して、ファイルの任意の位置に自分のクローンを埋め込んで行きます。 ファイルというのは、拡張子で管理されているのでHDDをスキャンして必要な拡張子のファイルを探せば良いのです。 全部プログラムされているので、決まった通りに動作しているだけですし、自然界のウィルスのようにプログラム内容が自動的に変化するような事も殆どありません。 別のウィルス作者などによって亜種が作られたりもします。
お礼
回答有難うございます。 一応ウイルスがexe、dll等バイナリに付け込む事は存じ上げております。 しかし、これらはコンパイル後のファイルであり、これらにウイルスが埋め込まれ、一緒に実行されるためには、逆アセンブラして解析でもしない限り不可能なように思います。 にもかかわらず、ウイルスは平気な顔で次から次へと増殖していきます。マシン語には定型文のようなものがあり、HDD内からその数列を探して溶け込んだりしているのでしょうか? そもそも、コンパイル後のファイルはそんな容易に書き換えられるものなのでしょうか。パスワード破りなんかと比べると、幾倍も困難な気がします。
お礼
なるほど。納得です。それならば容易に元ファイルに溶け込めそうですね。 スッキリしました。有難うございました。