我写了这个C程序并在我的Windows系统上运行。我的系统被绞死了,甚至连任务经理都没有打开。最后,我不得不重启。这显然是一个恶意程序,但我的防病毒软件没有检测到这一点。为什么呢?
#include<unistd.h>
main() {
while(1)
fork();
}
答案 0 :(得分:6)
防病毒程序无法识别恶意行为 - 它们识别已经存在的已知病毒的模式(文件名,进程名,二进制签名等)。
这就是为什么它们经常被颠覆,因为它们是对不断变化的问题的反应性解决方案。
答案 1 :(得分:3)
由于速度极快,开发人员通常不使用AV软件,或者至少在他们使用的文件系统子树上禁用AV软件。
但即便如此,这也不是AV软件试图检测的那种模式。 AV软件会查找您正在读写的文件以及系统状态或特定已识别病毒或其先前识别的签名的更改。
无论如何,它会如何决定?从一个程序的角度来看,在重载的Web服务器和一个分叉炸弹之间会有一条细线。
最后,这种行为是一种自我纠正。如果我们真的让病毒到达时没有比叉炸弹更具破坏性,那么我们可能会宣布胜利并说“不要那样做”。
顺便说一下,你是否以管理员身份运行了叉炸弹?答案 2 :(得分:2)
您的程序不是病毒,因为它无法传播,也就是说,它无法感染其他文件/计算机
答案 3 :(得分:0)
嗯,这不是恶意行为,看起来更像是代码中的逻辑错误。我希望有一天会有一个防病毒软件可以检测到应用程序,驱动程序,ms更新,导致BSOD的ms产品=)