【问题标题】:Simple Virus Remover [closed]简单的病毒清除器[关闭]
【发布时间】:2011-02-11 08:14:05
【问题描述】:

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

  • 检查原始文件和被感染文件
  • 从被感染文件中分离病毒
  • 使用相同的算法修复其他感染病毒的文件

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

有什么帮助吗??

【问题讨论】:

  • 如果您可以访问原始文件,为什么不将其复制到损坏的文件上呢?看起来工作量少了很多。
  • 我认为关键是要得出一个通用的“修复”,它适用于任何感染了相同病毒的文件。
  • @driis:是的,这更容易,但我不想那样做。我希望该程序能够开发一种算法来删除感染相同病毒的其他文件
  • 你必须小心误报。
  • 编写一个对文件进行修补的防病毒应用程序是相当棘手的事情,最好留给专业人士。这里的风险似乎不值得。

标签: c# .net patch antivirus virus


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 嗯,这是一个非常有用的答案。谢谢。我知道文件感染者以及将数据添加到备用 ntfs 流的感染类型。看来我必须自己做,因为看来我只能在这里得到建议
  • 后来弄明白了消毒过程,和感染过程正好相反。是的,它依赖于病毒代码的质量,但由于受感染的文件已经无用,所以如果我们丢失文件试图修复它并不重要.. :-/
  • 这就是消毒令人失望的原因。随机结果需要大量的工作......结合文件感染者不再“在野外”(wildlist.org/WildList/201101.htm)安静一段时间的事实,这是一门失传的艺术。
【解决方案2】:

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

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

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

【讨论】:

  • 您基本上判断您的解决方案不正确:-O
  • 我想说这取决于您检查的文件类型。任何试图从文件中删除病毒的算法都会遇到编译文件的问题。
  • 如果我们要删除的病毒也被编译,则不会。想想补丁系统及其工作原理。或者更好地考虑一下病毒如何感染已编译的程序。
  • @Opatachibueze 如果听起来很简单,那么它已经完成了。我认为您的解决方案可能会工作一段时间,直到“坏人”开始让他们的病毒做随机事情并具有随机签名。哦,等等,他们已经这样做了......老实说,你问如何做到这一点让我很担心,你想在 C# 中做到这一点(这对很多事情都有好处)但相信它会扫描和修改我的系统文件..不,谢谢。
  • 感谢您的直接答复。我只是喜欢对我所知道的可能的事情保持积极的心态:),但如果你认为我正在创建一个通用的解决方案来修补所有类型的感染,那你就错了。这更像是一个实验,但从我的研究来看,修补的主题似乎有很多不同的方式。不过现在,我将暂停该项目,直到我获得有关文件操作的更多知识
猜你喜欢
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 2010-09-14
  • 2011-11-21
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多