杀毒软件在我的可执行文件中出现错误

我遇到了一个恼人的问题。 突然, Avira AntiVir开始将我的软件中的一个可执行文件标记为病毒。

由于几乎所有用户的默认操作都是单击“确定”,Avirabuild议将病毒置于隔离区,因此我的大多数用户正在删除此可执行文件。

那么,让我们不要傲慢,检查我是否确实感染了。 我把这个文件发布到http://www.virustotal.com ,而所有的反病毒只有Avira把它标记为感染病毒。 此外,我用两种不同的反病毒扫描我的电脑,它很干净。

我已经发布了一封邮件给我的用户解释发生了什么,但这是我的支持,我真的不想要的开销。

好的,问题是:有没有办法避免这种行为? 除了签署文件之外,我想不出别的办法(真的不知道它是否会解决),但让我们看看你是否有任何创意。

Delphi应用程序被报告为AV应用程序(可能)有害,这是非常常见的。 它发生在我前一段时间,使用delphi2009年,见http://en.wikipedia.org/wiki/Wikipedia:Reference_desk/Archives/Computing/2010_March_20#Delphi.2FAVG_Issue

在SO,我们也有

  • 病毒在Delphi 7中
  • 无意中造成了病毒?

还有很多。

这可能是真正的印第安人病毒 。 但最有可能的是,这是一个误报。

安德烈亚斯的回答非常好, 它只是发生在Delphi应用程序。

签名代码没有任何区别 – 我已经有NOD32在签名的Delphi代码上抛出误报。

如果有任何技术可以避免误报,病毒作者将使用它们来避免检测。

我发现最好的行动方式不幸的是被动的而不是主动的。 所有的AV供应商都有报告误报的function,而且我发现他们对报告作出反应。

许多诚实的开发人员因为不小心的防病毒软件而有问题。 另请参阅: 如何防止我的软件出现假阳性病毒报警?

想象一下,对于他们所显示的每一个误报,你都会失去一个可能的顾客。 程序员应该对这些防病毒产品采取行动 ,并强制他们更加小心误报,甚至为我们因此而失去的销售收回一些收入。

更新:
最近我观察到:

  • 当程序编译时,VirusTotal.com上的误报数量更多的是“发布模式”(带有编译器优化),然后在“debugging模式”下编译。
  • 使用EurekaLog时检测天空火箭。

因此,请在发布程序之前提交给VirusTotal!

作为解决scheme,您可能需要:

1 – validation你的Delphi编译器没有被感染
2 – 确认你的源代码和库没有调和(这是对于Induc 病毒的MO)
3 – 检查你的(保证)干净的EXE与AVs。 如果他们报告误报,联系他们,以便他们可以修复他们的testing。

4 – 如果您需要在有机会纠正AV之前分发,请签署您的EXE,以便您的用户可以validation它是干净的。

有几个原因为什么一个反病毒产品可能触发一个Delphi生成的EXE,一些常见的原因是:

  • 很多病毒是用Delphi编写的,因此你的exe文件可能有一些与现有病毒相同的代码部分。
  • 您的程序的导入表用于确定您的exe 可能做什么,例如链接到凭据pipe理或磁盘pipe理function触发一些AV的。

正如之前所build议的,尝试使用Virustotal或Jotti等在线服务扫描您的发行版,并始终向供应商报告您的误报,而不是试图防止出现误报。 我的经验是AV厂商在提交时反应很快。

在免费的Pascal / Lazarus小组和bugtracker中,这样的消息几乎在每个发布版本和/或月份发生。

我们通常build议用户忽略所有“通用”或“启发式”扫描types,并坚持基于签名的扫描(像大多数公司的virusscanners一样)。

这是因为它几乎总是一个启发式的警报,从来没有具体的恶意软件。 这可以容易地看出,检测到的“病毒/木马”几乎总是“通用”types。 通常情况下,病毒扫描仪也是典型的“家庭”毒蛇扫描仪,或者是一般的毒蛇扫描仪的家庭版本(诺顿曾经是特别糟糕的,现在它主要是小规模的“廉价”家用扫描仪)

但是,我们主要与开发人员进行交stream,并且无法获得此消息。 我可以想象,在向无知的最终用户分发时,这是一个真正难以沟通的信息。

但是,没有别的办法。