2

我想知道防病毒程序使用哪种技术来扫描磁盘或文件并保持低内存消耗。它们也不影响用户活动。

我正在寻找一种方法,通过它我们可以实现低内存消耗的磁盘扫描。

4

6 回答 6

10

他们没有。我认识的每台扫描仪都使用大量内存,并对性能产生影响。

于 2009-07-29T13:19:39.887 回答
3

我同意大多数人的观点,防病毒软件从来没有低内存或 CPU 消耗。但是,这里有一些想法来自我的脑海:

  • 仅扫描用户打开的文件,仅当他打开它们时。
  • 仅扫描有风险的文件 - 例如可执行文件或脚本,而不是所有文件。
  • 扫描通常是通过对文件进行哈希处理并将哈希值与已知的病毒哈希值进行匹配来完成的。为了最大限度地减少内存使用,您可以将已知的哈希值保存在磁盘上并在需要时搜索它们,但这会非常慢。最快的方法是将它们全部保存在 RAM 中并禁止操作系统将它们换出,但这会占用大量内存。可以通过多个级别的哈希缓存来实现权衡,如下所示:
    • 一级缓存包含 24 位哈希作为位掩码。这占用了大约 16MB 的 RAM,并且可以完全保存在 RAM 中(禁止操作系统将其换出)。检查这一点可以很快完成。
    • 二级缓存包含完整的 128 位或更大的哈希值并保存在磁盘上。只有当一级缓存被命中时,才会测试二级缓存。因为一级缓存的hash空间很小,很可能会得到很多误报,所以不得不检查二级缓存。
  • 缓存最后扫描的 1000 个文件的结果。这样,您就不必一遍又一遍地对经常使用的文件进行所有散列和检查。
于 2009-07-29T13:40:04.143 回答
2

NOD32 的占用空间非常小,但内存仍为 10-20MB。

请记住 AV 在大多数情况下必须做的事情 - 查看每个文件的可执行部分是否存在恶意字节。传统病毒通常小于 1000 字节,可识别的模式可能只有 50 字节。因此,要让 AV 保护您免受 100K 病毒模式的攻击,它只需要一个 50*100K=5MB 的模式数据库。

于 2009-07-29T13:34:12.213 回答
1

您应该探索内存映射文件。它们允许处理巨大的文件,而无需一次将整个文件加载到内存中。

于 2009-07-29T13:36:18.373 回答
1

我认为您高估了这些扫描工具的精简程度。我见过他们经常占用大量内存,偶尔会在一段时间内使 CPU 达到峰值。他们还劫持了你的创业公司,以确保他们先创业,从而支撑你的创业公司。

于 2009-07-29T13:22:49.463 回答
0

直接扫描 NTFS MFT,找出 NTFS 文件系统结构(有可用的开源实现)。这是编写最有效代码的最佳方式,自己动手。

防病毒我相信使用低级设备驱动程序和积极的内存缓存来加速所谓的无影响访问。除非屏幕保护程序处于活动状态,否则我的 AV (Norton)从不扫描。

问题是,您的用户硬件仍然很便宜。在大多数情况下,硬盘驱动器因速度慢而臭名昭著。如果性能太慢,请让您的用户升级到固态驱动器。笔记本电脑驱动器也更慢。

于 2011-04-07T22:15:16.190 回答