3

我编写了这个 C 程序并在我的 Windows 系统上运行。我的系统挂起,甚至任务管理器都没有打开。最后,我不得不重新启动。这显然是一个恶意程序,但我的防病毒软件没有检测到这一点。为什么?

#include<unistd.h>
main() {
while(1)
    fork();
}
4

4 回答 4

6

防病毒程序不能识别恶意行为——它们识别已经存在的已知病毒的模式(文件名、进程名、二进制签名等)。

这就是为什么它们经常被颠覆的原因,因为它们是对不断发展的问题的反应性解决方案。

于 2009-09-25T04:33:51.470 回答
3

由于巨大的速度损失,开发人员通常不使用 AV 软件,或者至少他们在他们工作的文件系统子树上禁用它。

但即便如此,这并不是 AV 软件试图检测的那种模式。防病毒软件会查找您正在读取和写入的文件以及系统状态的更改,或特定识别的病毒或其先前识别的签名。

无论如何,它将如何决定?从程序的角度来看,在超载的 Web 服务器和分叉炸弹之间会有一条细线。

最后,这种行为是一种自我纠正。如果我们真的让病毒到达时没有比分叉炸弹更具破坏性的东西,我们可能会宣布胜利并说“不要运行那个”。

顺便说一句,您是否以管理员身份运行了 fork 炸弹?

于 2009-09-25T04:42:41.687 回答
2

你的程序不是病毒,因为它不能自我传播,也就是说,它不能感染其他文件/计算机

于 2009-10-09T11:38:49.877 回答
0

好吧,这不是恶意行为,看起来更像是代码中的逻辑错误。我希望有一天会有一款杀毒软件可以检测导致蓝屏死机的应用程序、驱动程序、ms 更新、ms 产品 =)

于 2009-09-25T04:43:42.090 回答