无意中造成了病毒?

时间:2009-06-14 20:21:45

标签: delphi antivirus virus false-positive

我已经看到它经常发生:我在Delphi中编写应用程序,当我编译它时,病毒扫描程序告诉我,我已经创建了病毒,然后立即再次删除可执行文件。这很麻烦,但通过完全重建很容易修复,首先删除* .dcu文件,有时只是等待。

据我所知,它发生在Delphi 6,7,2005和2007年。赛门铁克,卡巴斯基,迈克菲和NOD32都对​​报告这些误报感到内疚。我知道这是因为Delphi为其DCU文件添加了时间戳,这些时间戳最终在最终的可执行文件中,显然是一些随机病毒签名的一部分。

我不想禁用病毒扫描程序,甚至不能禁用单个文件夹或文件。我并不是真的想要解决方案,但我想知道以下内容:

  • 其他编译器也会出现这些误报吗?
  • .NET可执行文件也会发生吗?
  • 其他人是否也注意到与Delphi类似的问题?

17 个答案:

答案 0 :(得分:100)

  

这些误报也会发生   与其他编译器?

是的,这是AutoIt过去常见的问题,正如本论坛帖"Are my AutoIt EXEs really infected?"所述。在大多数情况下,包括AutoIt,它源于不良的启发式实践。由于AutoIt使用免费且开放的UPX压缩器,因此通常会将其误认为也使用UPX的恶意代码。

您可以做的最好(也可能是唯一)的事情是报告这些错误,以便他们可以优化他们的启发式或至少白名单列出您的应用。

以下是一些受欢迎的反病毒公司的联系信息列表。他们都声称赞赏提交,因为它有助于他们改进产品。

原来在维基百科上有很多AV软件,名为'List of antivirus software'。它比我上面的列表更完整。

自动论坛的成员a great script to e-mail a false positive to a huge list of AV vendors使这个过程自动化了一点。

答案 1 :(得分:10)

听起来更像是对我的启发式搞砸了。您是否启用了启发式扫描(某些扫描仪可能将其称为“类似病毒的代码”)?时间戳等同于“某些病毒签名的一部分”的可能性似乎太小而不能一直发生。

当我以前运行病毒扫描程序时,我从未在D6或D7上看到过这个问题。

答案 2 :(得分:8)

野外确实存在Delphi病毒,请参阅http://www.sophos.com/blogs/sophoslabs/?p=6117

答案 3 :(得分:6)

是的,我的团队在公司环境中使用Sophos在2 - 3年内经历过这种情况可能有六次。所以,很少,但确实发生了。

我们的IT cretin开始要求我在我们的应用程序中查看所有1.5M行代码以“让它消失”,但他没有太过追求那条线...

公平地说,他最初担心我们的客户可能也会收到这样的警告,但是我们只看到在开发人员的PC上从IDE构建exe时触发它,而不是发布版本的exe测试盒或其他地方。

就个人而言,它很少发生,我们不担心它。

答案 4 :(得分:4)

我用部署的代码发生了这件事。扫描仪的下一次更新解决了这个问题。一些cretin使用相同的编译器编写病毒,签名是运行时库的一部分,实际上并不是恶意代码。

答案 5 :(得分:3)

当使用非标准编译器或执行花哨的低级别时,这并不常见:我记得在涉及OS开发时创建误报:AntiVir不喜欢我的一些平面二进制文件。

最近,在tinyCC mailing list注册AVG上有一篇关于此类问题的帖子。

答案 6 :(得分:2)

我只看到装配工发生这种情况。例如,MASM32实际上警告人们它可能会触发病毒扫描程序,因为EXE非常小(和/或某些病毒是用汇编编写的)。我的McAfee扫描程序将某些示例程序标记为病毒。

只有具有“看起来可疑”分析模式的病毒扫描程序才会出现这种情况。

答案 7 :(得分:2)

再加上其他人所说的,如果你的程序也使用了一些“可疑的”API(比如URLdownloadFile或其他与API相关的API),现代反病毒程序会提升病毒警报。 如果你谷歌“delphi RAT FUD API检测不到”,你会发现许多有趣的话题。

答案 8 :(得分:2)

在某些应用中,如果我使用RtlVclOptimize.pas,则Avira防病毒软件会告诉我已创建病毒。

答案 9 :(得分:2)

我从未见过这个,用Visual Studio(从版本1.5到2010)进行了大量的C ++和.NET开发。

答案 10 :(得分:1)

某些防病毒程序甚至将批处理文件标记为病毒,并且无法确信它不是。非常讨厌,如果该文件是第三方库的一部分,并且每次TortoiseSVN检查它时都会触发病毒警告。我最终禁用了病毒扫描程序,删除了文件并进行了提交。 (没有禁用扫描仪,我甚至不能这样做:-()

答案 11 :(得分:1)

几年前,每当我们从mingw源更新GNU Linker并开始使用我们的编译器分发它时,我们得到一些报告称virusscanners将ld.exe归类为病毒。 (.exes写.exes ...)

答案 12 :(得分:1)

我不会称之为“误报”,因为严格来说,它并非虚假,而且防病毒软件对任何事情都没有任何“内疚”。

我99%肯定,这是起作用的启发式分析(我打赌它会将你的可执行文件检测为类似于win32.virus.generic的内容 - 注意泛型,这是一个签名,这不是在它的签名数据库中,而是由启发式检测到)并且,启发式和所有,它不会给你任何保证,无论它发现什么是恶意的,它只是有点使它您知道,从其角度来看,可执行文件是

最简单的解决方案就是按名称为您的文件添加一个例外(它始终是相同的名称,对吗?)。如果您对此感到不舒服,可能应该让您的防病毒软件在采取措施之前提示您,以便您可以手动跳过文件。

一般来说,我发现Windows中的编码与防病毒软件有点刺激(现在不要做太多,但仍然如此),特别是如果所述软件处于“偏执模式”。尽管如此,它是令人生畏的,但它是不可避免的(IMO)。

答案 13 :(得分:1)

它也发生在我身上。挂钩键盘将触发几乎任何启发式扫描AV软件报告键记录器。可能还有许多其他系统调用也会触发它。 解决方案 - 尝试重新设计代码或联系AV制造商,将您的软件包含在例外列表中。

答案 14 :(得分:1)

我记得另一个奇怪的人:

文件被标记为可疑。唯一的是文件是.OBJ!包含.OBJ包含的代码的.EXE不被视为问题。

答案 15 :(得分:1)

如果您遇到误报问题,可以使用VirusTotal在线服务来帮助您根据防病毒引擎的数量来检查您的文件。
它是免费服务,目前它可以使用近40个防病毒引擎运行防病毒检查。

答案 16 :(得分:0)

VS平台工具集2010 会将我的简单程序检测为病毒。 将工具集更改为 VS 2013 可解决此问题。

它只是创建一个HttpWebRequest并将结果写入文件。