如何防止我的软件出现误报病毒警报? [复制]

Posted

技术标签:

【中文标题】如何防止我的软件出现误报病毒警报? [复制]【英文标题】:How to prevent false positive virus alarm on my software? [duplicate] 【发布时间】:2011-05-13 08:37:11 【问题描述】:

可能重复:Antivirus False positive in my executable

到目前为止,我的程序收到了超过 15 个虚假病毒警报。其中大多数来自卡巴斯基,它总是报告相同的病毒:***-GameThief.Win32.Lmir.pcd。 有3个问题:

    为什么会出现? 如何预防? 如何检测?

对于第一个问题,因为它总是检测到相同的病毒,我想这是因为我在所有程序中都使用了我的一个例程。但具体是哪一个,我不知道。 对于第二个问题,我正在考虑稍微修改程序并重新编译它,足以更改其代码,以便防病毒软件不再识别它并发布新版本。 第三个问题是最难的。如何检查我的所有程序与世界上所有的防病毒程序?


更新: 有没有人知道如何合法处理这个问题?似乎许多 Delphi 开发人员都有同样的问题。鲁莽的防病毒公司通过显示大量误报来赚钱,让他们的客户在实际上没有危险的情况下认为他们是安全的。当我们失去客户时,他们正在创造客户。 我将问题告知了防病毒公司,但他们仅针对该特定版本进行了修复。下次我发布更新时,误报再次出现。他们只是不在乎。

许多诚实的开发人员因为粗心的防病毒软件而遇到问题。 另请参阅:How to prevent false positive virus alarm on my software?

也许我们可以联合起来反对此类防病毒产品,并迫使他们对误报更加小心,甚至为我们因它们而损失的销售额取回一些收入。 我们应该sign a petition 让他们知道我们不再接受这个。

2017 年更新 * 上周我的程序在 VirusTotal 上的检测率接近 50%。我删除了一行代码,神奇地检测到了 61 个(防病毒)中的 2 个。这些防病毒产品的随机性令人惊讶。 * 当程序编译为“发布模式”(带有编译器优化)时,检测率要比在“调试模式”下编译时高得多。 * 使用 EurekaLog 时检测天空火箭。

2019 年更新 差不多 9 年过去了,并没有太大改善。 不幸的是,InnoSetup 也未能幸免。我在 VirusTotal 上使用 InnoSetup 和 upload it 创建了一个虚拟安装程序。 52 个程序中有 5 个报告了误报!

结论:

在一天结束时将您的 exe 文件上传到 VirusTotal。如果检测率突然跳跃,请检查您在代码中所做的更改并删除“有害”的更改。 使用 WinRar 3 作为安装程序。它引发的标志少于 WinRar 5 或 InnoSetup。

【问题讨论】:

虽然确实很烦人,但 AV 公司通常并没有明确设计为导致误报,以使自己看起来比竞争对手更好。如果有的话,那实际上会让他们看起来更糟,因为这会让他们the AV who cried wolf。问题只是他们中的许多人在分析他们不熟悉的程序时过于热心(因此往往会发现更多的误报),其中通常包括您自己编译的程序。 是的,但如果它过于频繁地给出这样的消息,或者对于其他 AV 程序没有检测到任何东西的程序(特别是如果程序的文档或常见问题解答明确指出这个特定的 AV 程序提供了误报),人们就会开始怀疑 AV 程序。 对我有帮助的是 1)关闭优化,2)用 upx.exe 打包 exe 【参考方案1】:

第三个问题:有一个名为virus total 的网站,它使用许多防病毒引擎扫描文件。他们有一个 api,因此您可以将这部分作为构建过程的一部分。

另外,一些类似的问题可能会有所帮助:

Antivirus False positive in my executable

Virus in Delphi 7

https://***.com/questions/3534050/my-software-is-not-a-virus-what-should-i-do (Snapshot of deleted question)

Accidentally created a virus?

【讨论】:

尝试在您的软件中包含版本信息,这可能会给它一些合法的声望! 文章“修复我的软件的反病毒检测”很有用,但 *** 版主以其无限智慧将其删除。 @Rigel 我添加了一个屏幕截图。我不同意删除,我已经标记了它,但可悲的事实是,这就是 *** 现在的样子。由于网站的普遍衰败,成为版主是一项艰巨且吃力不讨好的任务:meta.***.com/questions/386324/… 又一篇关于 SO 衰落的好文章:hackernoon.com/the-decline-of-stack-overflow-7cb69faa575d 和 hackernoon.com/…【参考方案2】:

首先,确保您没有感染 Win32.Induc delphi 病毒,该病毒会更改 SysConst.dcu,从而使您编译的应用程序受到感染。

    使用 #3 缩小代码中导致误报的原因。更改进程内存的 API 调用将触发启发式扫描器。即使包含一些 API 函数的名称(例如 WriteProcessMemory)也会触发扫描器。对测试应用程序进行更改并提交到#3,直到缩小问题范围。如果您使用打包程序,那么 AV 软件可能无论如何都会对其进行解包,但在有无打包的情况下进行测试。

    将取决于 #1。

    Virustotal 被病毒开发者用来检查他们的病毒是否未被检测到,因此 Virustotal 会将任何测试文件发送给反病毒人员进行分析。曾经有一个选项可以关闭此功能,但几年前已将其删除。如果您多次提交申请,这会使问题变得更糟,因此我建议您使用http://virusscan.jotti.org/ 进行初始测试。

【讨论】:

实际上,jotti.org 也将提交的文件发送给 AV 公司。我认为这不是什么大问题,所以也许使用 virustotal,因为它的 AV 引擎数量最多(jotti 为 43 对 20 奇数)。 没有。我没有 Win32.Induc。我厌倦了这些反病毒公司指责无辜的软件开发人员只是为了确保他们得到尽可能多的警报(无论它们是好警报还是假警报)。

以上是关于如何防止我的软件出现误报病毒警报? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

每次我们重新发布软件时如何阻止防病毒误报?

我的可执行文件中的防病毒误报

防止沙盒应用程序中出现 Cmd+Shift+Q 警报

防病毒误报?

如何防止多个 UIAlertView 堆叠?

安装双系统如何防止木马病毒影响其他磁盘