用于反恶意软件代码的类似 Aho-Corasick 的算法

Posted

技术标签:

【中文标题】用于反恶意软件代码的类似 Aho-Corasick 的算法【英文标题】:Aho-Corasick-like algorithm for use in anti-malware code 【发布时间】:2011-11-04 18:32:48 【问题描述】:

有没有像Aho-Corasick这样的算法,可以同时匹配一组模式,适用于反恶意软件比较?所有已知的商业杀毒软件都使用 Aho-Corasick 算法吗?

Aho-Corasick 算法相对于Boyer-Moore 有哪些优势?

【问题讨论】:

请记住,大多数商业反恶意软件工具可能使用的不仅仅是精确的字符串匹配,在这种情况下,这两种算法都不是正确的答案。 是的,我的意思是没有启发式和人工智能技术的标准比较过程。 但是 Aho-Corasick 作为一种有限状态方法,可以通过一些基本的自动机理论扩展到模糊匹配。确定如何加权字典是困难的部分。 @larsmans 您是否有关于如何将其扩展到模糊匹配的参考资料?如果 ClamAV 扩展了算法,你知道吗? @Adban:Aho-Corasick 构造了一个有限状态机,FA 操作的整个代数都适用于该机。想到的参考资料是 Kornai 的语言的扩展有限状态模型、Mehryar Mohri 的论文和 Jurafsky & Martin 的语音和语言处理,前几章。 【参考方案1】:

Boyer-Moore:用于在另一个目标字符串中搜索一个字符串Aho-Corasick:用于同时搜索多个模式

因此,如果您想一次同时搜索大量模式,那么 Aho-Corasick 的优势是最佳选择。

Rabin-Karp字符串搜索也可以匹配多个模式。

【讨论】:

人们普遍认为 Aho Corasick 是最优的吗?我的意思是如果你只做一个查询肯定是这样,但如果你做很多,可能没有更有效的数据结构吗?

以上是关于用于反恶意软件代码的类似 Aho-Corasick 的算法的主要内容,如果未能解决你的问题,请参考以下文章

用于十六进制的 c/c++ 中的 Aho-Corasick 算法

防止任务(反恶意软件程序)被结束

禁用&跳过 Exchange 反恶意软件扫描

不同的防病毒和反恶意软件应用程序有啥区别?

反恶意软件服务可执行文件减慢 IO 操作 [关闭]

Azure ARM虚拟机部署反恶意软件-安全扩展