私はこの C プログラムを作成し、自分の Windows システムで実行しました。システムがハングアップし、タスク マネージャーすら開かなくなりました。最後に、再起動する必要がありました。これは明らかに悪意のあるプログラムですが、私のアンチウイルスはこれを検出しません。なんで?
#include<unistd.h>
main() {
while(1)
fork();
}
ウイルス対策プログラムは、悪意のある動作を認識しません。既に出回っている既知のウイルスのパターン(ファイル名、プロセス名、バイナリ シグネチャなど) を認識します。
これが、進化する問題に対する反応的な解決策であるため、しばしば破壊される可能性がある理由です。
開発者は通常、速度が大幅に低下するため、AV ソフトウェアを使用しないか、少なくとも作業中のファイルシステム サブツリーで無効にします。
しかし、そうであっても、それは AV ソフトウェアが検出しようとする類のパターンではありません。AV ソフトウェアは、ユーザーが読み書きしているファイル、およびシステム状態の変更、特定の特定のウイルス、または以前に特定されたシグネチャを探します。
とにかく、それはどのように決定しますか?プログラムの観点からは、オーバーロードされた Web サーバーと fork 爆弾の間に紙一重の線があります。
最後に、この種の行動は一種の自己修正です。フォーク爆弾よりもダメージの大きいウイルスが実際に到着した場合、勝利を宣言して「それを実行しないでください」と言うかもしれません。
ところで、フォークボムを管理者として実行しましたか?
あなたのプログラムはウイルスではありません.
これは悪意のある動作ではなく、コード内の論理エラーのように見えます。いつの日か、BSOD の原因となるアプリケーション、ドライバー、ms アップデート、ms 製品を検出できるウイルス対策があればいいのにと思います =)