c++ - AntiViruses 的字符串/签名比较

标签 c++ database algorithm antivirus string-comparison

基于签名的防病毒软件是否将每个当前扫描的文件与数据库中存在的所有字符串/签名相匹配?是否需要通过所有签名才能将它们与文件进行比较?比较是从“数据库到文件”而不是“文件到数据库”,是这样吗?

第二个问题:是否可以先通过AV引擎从文件中提取字符串/签名(不是整个文件的哈希),然后查看该字符串是否在数据库中?有没有已知的 AV 是这样做的?

最佳答案

通常,这是如何完成的是使用已知病毒签名的数据库来构建状态机(通常与 Aho-Corasick string search algorithm 非常相似)。然后,每个要检查的文件都通过状态机运行。事实证明,这出奇地快,因为所有匹配的病毒签名都可以通过一次文件遍历找到。

关于c++ - AntiViruses 的字符串/签名比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7673827/

相关文章:

C++/Linux 出于性能原因对齐字符数组?

c++测试2组是否不相交

mysql - 未知列的结构数据库

sql-server - 从其他表中插入数据到sql server

algorithm - 如何找到最远的两个点?

c - 循环中的冗余代码

c++ - 为什么 C++ 中的可变大小数组 (VLA) 需要具有自动 (auto) 存储类?

c++ - 如何输入少于 1000 个单词的带空格和标点符号的文本?

c++ - automake 的自动检测源

Android 光标在通用业务对象列表上?