基于签名的防病毒软件是否将每个当前扫描的文件与数据库中存在的所有字符串/签名相匹配?是否需要通过所有签名才能将它们与文件进行比较?比较是从“数据库到文件”而不是“文件到数据库”,是这样吗?
第二个问题:是否可以先通过AV引擎从文件中提取字符串/签名(不是整个文件的哈希),然后查看该字符串是否在数据库中?有没有已知的 AV 是这样做的?
最佳答案
通常,这是如何完成的是使用已知病毒签名的数据库来构建状态机(通常与 Aho-Corasick string search algorithm 非常相似)。然后,每个要检查的文件都通过状态机运行。事实证明,这出奇地快,因为所有匹配的病毒签名都可以通过一次文件遍历找到。
关于c++ - AntiViruses 的字符串/签名比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7673827/