60

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

据我所知,它发生在 Delphi 6、7、2005 和 2007 上。赛门铁克、卡巴斯基、迈克菲和 NOD32 都因报告这些误报而犯了罪。我知道这是因为 Delphi 在其 DCU 文件中添加了时间戳,这些时间戳最终出现在最终的可执行文件中,并且显然似乎是某些随机病毒签名的一部分。

我不想禁用病毒扫描程序,即使是单个文件夹或文件也不行。而且我并不是真的想要一个解决方案,但我想知道以下几点:

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

17 回答 17

105

其他编译器也会出现这些误报吗?

是的,这是AutoIt过去的一个常见问题,如本论坛帖子“我的 AutoIt EXE 真的被感染了吗?”中所述。. 在包括AutoIt在内的大多数情况下,它源于糟糕的启发式实践。由于AutoIt使用免费且开放的UPX压缩器,因此经常被误认为也使用UPX的恶意代码。

你能做的最好的(也可能是唯一的)事情就是报告这些错误,这样他们就可以改进他们的启发式方法,或者至少将你的应用程序列入白名单。

以下是一些流行的反病毒公司的联系信息列表。他们都声称感谢提交的内容,因为它可以帮助他们改进他们的产品。

原来维基百科上有一个很棒的 AV 软件列表,称为“防病毒软件列表”。它比我上面的列表更完整。

Autoit 论坛的一位成员编写了一个很棒的脚本,将误报通过电子邮件发送给大量 AV 供应商,以稍微自动化这个过程。

于 2009-06-14T20:57:59.693 回答
11

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

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

于 2009-06-14T20:30:24.630 回答
9

野外确实有Delphi病毒,见http://www.sophos.com/blogs/sophoslabs/?p=6117

于 2009-11-15T03:17:37.517 回答
8

是的,我的团队在公司环境中与 Sophos 一起在 2 到 3 年内经历了大约六次。所以,很少发生,但确实会发生。

我们的 IT 白痴开始要求我审查我们应用程序中的所有 150 万行代码以“让它消失”,但他并没有走得太远追求那条线......

公平地说,他最初担心我们的客户也可能会收到这样的警告,但我们只见过在开发人员的 PC 上从 IDE 构建 exe 时触发它,从来没有在测试盒上发布构建 exe 或别处。

就个人而言,这种情况很少发生,我们不必担心。

于 2009-06-14T22:18:02.297 回答
5

我在部署代码时遇到过这种情况。扫描仪的下一次更新解决了这个问题。一些 cretin 使用相同的编译器编写了病毒,并且签名是运行时库的一部分,而不是实际上在恶意代码中。

于 2009-06-14T23:07:37.760 回答
4

这在使用非标准编译器或做花哨的低级东西时并不少见:我记得当我涉足操作系统开发时会产生误报:AntiVir 不喜欢我的一些平面二进制文件。

最近,在tinyCC 邮件列表里有一篇关于 AVG的关于此类问题的帖子。

于 2009-06-14T20:32:56.697 回答
3

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

于 2009-06-14T20:28:42.683 回答
3

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

这应该只发生在具有“看起来可疑”分析模式的病毒扫描程序上。

于 2009-06-14T20:29:16.863 回答
3

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

于 2009-06-15T00:06:27.683 回答
3

再加上其他人所说的,如果您的程序也使用一些“可疑”API(如 URLdownloadFile 或其他与挂钩相关的 API),现代防病毒程序会发出病毒警报。如果你用谷歌搜索“delphi RAT FUD API undetectable”,你会发现很多有趣的话题。

于 2009-06-15T04:09:54.987 回答
3

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

于 2009-06-15T05:32:58.967 回答
3

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

于 2010-07-27T10:41:39.207 回答
2

几年前,每次我们从 mingw 源更新 GNU 链接器并开始使用我们的编译器分发它时,我们都会收到一些报告,称病毒扫描程序将 ld.exe 归类为病毒。(.exes 写 .exes ...)

于 2009-06-15T07:33:40.020 回答
2

我不会称其为“误报”,因为严格来说,它不是假的,而且防病毒软件无论如何都不会“有罪”。

我有 99% 的把握,这是启发式分析起作用(我敢打赌,它会将您的可执行文件检测为类似于 win32.virus.generic 的内容 - 请注意generic,这是一个标志,这不在其签名数据库中, 而是被启发式检测到) 并且,由于是启发式的,它并没有给你任何保证,无论它发现什么都是恶意的,它只是让你知道,可执行文件是可疑的其观点

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

总的来说,我发现在带有防病毒软件的 Windows 中编码有些烦人(现在不要做太多,但仍然如此),特别是如果所述软件处于“偏执模式”。虽然令人恼火,但它是不可避免的(IMO)。

于 2009-06-15T07:46:41.360 回答
2

我记得还有一个奇怪的:

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

于 2009-09-09T02:01:36.097 回答
1

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

于 2009-06-16T11:56:02.693 回答
1

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

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

于 2016-05-20T07:00:35.300 回答