防病毒软件如何相互冲突?

iBu*_*Bug 57 software-conflict anti-virus

我被教导永远不要同时安装两个防病毒 (AV) 软件,因为它们会发生冲突。甚至 Windows Defender(自 Windows 8 起)在检测到其他 AV 软件时也会自行禁用。

我很好奇两个怎么会冲突。我目前唯一能想到的情况是,当两者都检测到相同的病毒并尝试同时对其进行隔离时,这可能会导致“病毒征服战”。对我来说,这肯定不是安装两个 AV 软件的令人信服的理由。


更不用说系统性能问题了。我想我的 Intel Kaby Lake i7 可以使用 16 GB 安装内存轻松处理它们。

gro*_*taj 83

普通的防病毒扫描程序可以共存而没有任何问题。这是可能导致 AV 干扰的实时保护。

具有实时保护功能的 AV 软件将自身深度集成到操作系统中。它修补了一些操作系统代码,以便它可以观察任何程序尝试执行的操作,并在必要时阻止它们执行此操作。操作系统不提供这种开箱即用的功能,因此 AV 使用较少的传统方法来实现这种效果。

例如,它可以用其自定义的功能替换操作系统提供的“写入文件”功能。当程序尝试写入文件时,它会调用“写入文件”函数。但是该功能被 AV 修补,程序的请求将被重定向到 AV。AV 将检查它并决定它是否正常。如果是,它将调用实际的“写入文件”函数。否则,它将采取适当的措施来防止恶意软件造成任何损害。

不幸的是,操作系统代码的修补不仅对于 AV 来说是必要的,而且也是可疑的。如果您正在制造病毒,您是否也希望能够拦截系统操作,例如阻止 AV 扫描病毒文件?

所以 AV 有守卫看他们的代码钩子是否仍然存在,并在必要时重新安装它们。在这一点上,你应该看到这是怎么回事......

两个具有实时保护功能的 AV 可以开始保护您免受彼此的可疑行为的影响。这可能导致从轻微的性能问题到系统崩​​溃的任何事情。

在某些情况下,即使是没有实时保护的 AV 扫描仪也会干扰。AV 如何检测病毒?嗯,他们有他们的病毒签名,即。已知病毒的显着特征的数据库。所以碰巧这样的数据库也可能看起来很可疑,因为它们具有病毒的独特特征。因此,一个 AV 可以假设将其他 AV 的签名检测为恶意代码。

还有一些 AV 引擎旨在与其他 AV 共存,例如 Hitman Pro。ClamWin(它是免费和开源的)在共存时也应该相对没有问题,因为它只包含一个没有任何实时保护的扫描仪。

  • 从某种意义上说,杀毒软件本身就是一种病毒。想象一个城市有两支警察部队,他们无法沟通,也不穿制服。使用他的手电筒查看建筑物内部是否有罪犯的警官看起来就像是一个罪犯将关节套在另一个部门的警官面前。 (41认同)
  • @iBug 除了“中文”和“免费”之外,我看到了很多知名品牌(McAfee、Norton/Symantec、Panda 等)的不良行为。 (30认同)
  • @Bob:我们甚至还没有开始谈论 [他们的漏洞...](http://www.syscan360.org/slides/2014_EN_BreakingAVSoftware_JoxeanKoret.pdf) (2认同)

Fra*_*mas 14

当它们都尝试使用相同的资源时,程序会发生冲突。当多个程序试图同时操作一个资源时,存在并发问题的风险。当一个进程对资源执行更改时,会出现并发问题,而另一个程序(正在中间对资源进行自己的修改)不知道它,因此无法适应。

下面是一些教科书并发问题的例子。

最后胜利的问题

想象一下,您正在使用 FTP 目录共享一个文档,您和一位同事在该目录中协作处理一个文档。您下载文档,对其进行编辑,然后再次发布,就像您的同事一样。

  1. 您下载文档,然后开始一组需要 1 小时的更改。
  2. 您的同事会在您下载文档的同时下载文档,但只需半小时即可完成并重新上传他们的更改。

结果:当您上传您的文档时,您会覆盖他们的更改并丢失。

陈旧数据

在同一场景中,您的同事在没有告诉您的情况下进行了一些您需要的更改。您的文件副本没有更改,

结果:你自己用略有不同的词写了相同的变化,或者更糟的是,发送一封令人讨厌的电子邮件,说明它是如何丢失的。

这似乎是一个简单的场景,但在多访问数据库等高级情况下,如果您在有人更新记录的同一毫秒内选择记录,您可能会遇到严重的问题。

错误的计算

一对已婚夫妇共用一个银行账户和 ATM 卡。他们的账户中有 1000 美元。在他们的日常生活中,他们在城镇的两侧,并且都在同一时间使用自动取款机。他们都提取了 1000 美元。ATM 都知道余额是 1000,所以他们允许提款,然后写回中央数据库新的余额是 0。

结果:银行现在出 1000 美元,甚至不知道。

在所有这些示例中,有多方同时或几乎同时对共享资源执行操作。因此,术语“并发”或“同步”。

解决方案

有几种方法可以处理此类问题。一种是使用在访问资源的多方之间进行仲裁的软件。这些仲裁程序有两个选项,具体取决于操作的范围和可预测性:

  • 智能合并操作
  • 阻止/锁定这两个操作中的一个,直到注意到的第一个操作完成。

也可以阻塞/锁定,前提是两个程序都设计为检查指示资源状态的共享标志。这通常需要定制开发。

你的答案

在您的特定情况下,资源是磁盘上的文件。同步性来自文件读/写等事件,它们在两个 AV 程序中触发访问扫描。

Windows 充当仲裁者,通过在程序为特定操作打开文件锁定文件来解决文件系统并发问题。

这意味着两个程序都在争先恐后地访问该文件,而首先到达那里的人将获得锁定。在低级别上,这会导致一些磁盘抖动,因为两个程序都开始自己的 I/O 活动,迫使硬件分别执行这两项任务,但交错执行 IO 指令,使两者的效率大大降低,最后,只有一个他们中的人会赢。另一个将旋转并等待能够建立自己的锁定。

  • 如果防病毒软件 1 注意到文件已被访问,并对其进行扫描,然后防病毒软件 B 看到文件已被访问,因此它会扫描它,然后防病毒软件 A 注意到文件已被访问,则并发问题可能会更糟。上次扫描,所以它再次扫描,等等......(我在我朋友的笔记本电脑上看到过这种情况,Windows 在启动后大约 10-20 分钟后冻结,在截止日期之前变得更慢) (9认同)
  • 并发是一个或多或少已解决的问题,而不是真正的 AV 特定问题。我投了反对票,因为我认为你的回答完全忽略了核心问题,而是集中在一个如果没有解决就会影响大多数计算机软件的问题上,但不是因为它已经解决了。 (4认同)
  • 我试图在 [我的回答](https://superuser.com/a/1274450/194694) 中解决这个问题。两个 AV 不会竞争磁盘 I/O,因为它们并行尝试导致竞争条件。每个人都会尝试将自己注入操作系统。当一个 AV 被另一个扫描时,任何一种情况都会以稳定的方式解决,或者它会以脆弱的混乱结束,或者 AV 将继续试图主导对方。 (2认同)