简单的病毒卸妆

时间:2011-02-11 08:14:05

标签: c# .net patch antivirus virus

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

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

我知道这是可能的,因为这与修补程序的创建方式相同,但我对如何解决此问题感到有点迷失。

任何帮助?

2 个答案:

答案 0 :(得分:3)

您必须提供更多智能,而不仅仅是进行一些模式匹配,并删除孤立的病毒代码。

您所针对的病毒是files infectors,在我们这个时代很少使用。 大多数情况下,他们的复制过程如下:

  1. 他们在PE files
  2. 的开头或结尾复制自己
  3. 找到PE文件的入口点
  4. 将跳转指令指向此位置,指向他们的代码
  5. 对任何防病毒软件来说,消毒文件是最困难的部分。它依赖于病毒代码的质量:如果它有问题,主机文件将无法恢复。

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

答案 1 :(得分:0)

对两个文件进行区分,基本思路是逐个比较原始文件和受感染文件,直到保存与某些数据结构的差异为止。然后在将来你可以找到“病毒”,它假设是差异的集合,在其他文件中删除“病毒”。

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

EDIT *** 检查病毒的其他文件不会太难,但我假设你正在处理一些纯文本形式的文件,对于二进制文件,我认为你不能删除“病毒”