7

我正在尝试创建一个简单的病毒清除程序。我开发的算法旨在:

  • 检查原始文件和受感染文件
  • 将病毒与受感染的文件分开
  • 使用相同的算法修复其他感染病毒的文件

我知道这是可能的,因为这与创建补丁的方式相同,但我对如何进行此操作有点迷茫。

周围有什么帮助吗??

4

2 回答 2

3

您必须投入更多的智能,而不是简单地进行一些模式匹配并删除孤立的病毒代码。

您针对的病毒是文件感染器,在我们这个时代很少使用。大多数情况下,它们的复制过程如下:

  1. 他们在PE 文件的开头或结尾复制自己
  2. 找到 PE 文件的入口点
  3. 将跳转指令指向该位置,指向他们的代码

对文件进行消毒是任何防病毒软件最困难的部分。它依赖于病毒代码的质量:如果它有缺陷,宿主文件将无法恢复。

无论如何,您正在进入一个机器指令的世界,其中反汇编程序(IDA、PE Explorer ...)和调试器将成为您最亲密的朋友。

于 2011-02-11T10:44:58.863 回答
0

对两个文件进行差异化,基本思想是逐个字符比较原始文件和受感染文件,直到将差异保存到某些数据结构中。然后在将来,您可以在其他文件中查找假设是差异集合的“病毒”并删除“病毒”。

唯一的问题是这两个文件之间可能会存在与“病毒”无关的差异,例如被感染的文件以与原始文件不同的方式进行了修改,这与病毒无关。

编辑*** 检查其他文件是否有病毒不会太难,但我假设您正在处理一些纯文本形式的文件,对于二进制文件,我认为您无法删除病毒”。

于 2011-02-11T08:30:38.017 回答