【问题标题】:How to write signatures database for AntiVirus?如何为 AntiVirus 编写特征库?
【发布时间】:2023-04-10 21:49:01
【问题描述】:

我用 C 编写了小代码来扫描我硬盘中的所有文件和文件夹......它还可以读取可执行文件(如 .exe )的二进制代码的上部并将其与内联单个二进制文件进行比较签名(以十六进制表示)。如果签名与任何扫描文件的 bin 代码匹配,它会显示一条消息。

我们注意到我将样本签名保存在一个数组中,因为它只是一个签名。 如果我想添加很多其他签名,我必须做什么!我需要使用数据库!但是我需要什么样的数据库?我是否需要使用 SQL 查询来获取和比较签名!商业杀毒软件(Kaspersky、Symantic、..etc)使用什么样的数据库? 有什么想法吗?

【问题讨论】:

    标签: c++ database algorithm security antivirus


    【解决方案1】:

    Berkeley DB 是一个免费/开源的嵌入式数据库库,基本上是磁盘上的键值存储(搜索树或哈希表,取决于设置)。它甚至比 SQLite 更简单,因为它避免了关系数据和 SQL 的概念。

    例如,您可以将病毒签名用作键,将它们的名称用作值。

    【讨论】:

      【解决方案2】:

      SQLite 可能是您的应用程序的不错选择。与 SQL Server / Oracle 等成熟的 RDBMS 系统相比,它是一个轻量级 SQL 引擎。

      附注:您可以考虑将此数据库保存在相关系统以外的位置。似乎您担心恶意用户会修改驱动器的内容。如果是这样,那些相同的用户可以很容易地了解您的方案,并确保他们更改的任何文件也反映在您的数据库中的新哈希值中,因此当您进行比较时,它们将始终匹配。相反,如果您运行您的程序,将哈希值存储在不同系统上的数据库中,那么您的数据库没有受到损害会更放心,因为这两个系统都必须被接管。

      【讨论】:

        【解决方案3】:

        专业的avs不使用sql匹配病毒签名。它是一个复杂得多的过程。 如果您对该主题感兴趣,请查看http://sourceforge.net/projects/clamwin/。或者在 Kaspersky 2008 泄露的资源...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-16
          • 1970-01-01
          • 1970-01-01
          • 2017-02-16
          • 1970-01-01
          相关资源
          最近更新 更多