到目前为止,我的程序中有超过15个错误的病毒警报。他们中的大多数来自卡巴斯基,它总是报告相同的病毒:Trojan-GameThief.Win32.Lmir.pcd。 有3个问题:
对于第一个问题,因为它总是检测到相同的病毒,我想这是因为我在我的所有程序中使用的一个例程。但究竟哪一个,我不知道。 对于第二个问题,我正在考虑稍微修改程序并重新编译它,足以改变其代码,以便防病毒软件不再识别它并发布新版本。 第三个问题是最困难的问题。如何检查我的所有程序与世界上所有的防病毒程序?
更新:
是否有人知道如何合法处理这个问题?似乎很多Delphi开发人员都有同样的问题。鲁莽的反病毒公司通过展示大量误报警来赚钱,让他们的客户认为在没有危险的情况下他们是安全的。虽然我们正在失去客户 - 但他们正在创造客户。
我向防病毒公司通报了这个问题,但他们只针对该特定版本进行了修复。下次我发布更新时,会再次出现误报。他们只是不在乎。
许多诚实的开发人员因粗心的防病毒软件而出现问题。 另请参阅:How to prevent false positive virus alarm on my software?
也许我们可以团结起来反对这些防病毒产品,并强迫他们对误报警告更加谨慎,甚至为我们因为它们而失去的销售收回一些收入。 我们应该签署某种请愿书,让他们知道我们不再接受这一点。 https://docs.google.com/forms/d/1H3_O1z1iEqfh9ZT9u3B0R1tGEj-Hc9o7rAE0LKPr33Y
2017年更新
*上周,我的程序在VirusTotal上的检测率接近50%。我删除了一行代码,神奇地检测到61个中的2个(防病毒)。这些防病毒产品的随机性如何令人惊讶
*当编译程序为'Release mode'(带编译器优化),然后在'Debug mode'中编译时,检测值会高很多。
*使用EurekaLog时检测天空火箭。
结论:在一天结束时将您的exe文件上传到VirusTotal。如果检测率突然跳跃,请检查您在代码中所做的更改并删除“有害”的更改。
答案 0 :(得分:7)
首先,请确保您没有Win32.Induc delphi病毒,它会更改SysConst.dcu,以便您编译的应用程序将被感染。
使用#3缩小代码中导致误报的范围。更改进程内存的API调用将触发启发式扫描程序。即使包含某些API函数(如WriteProcessMemory)的名称也会触发扫描程序。对测试应用程序进行更改并提交到#3,直到您缩小问题范围。如果您使用打包机,那么AV软件可能无论如何都可能打开包装,但无论是否包装都可以进行测试。
将取决于#1。
病毒开发人员使用Virustotal来检查他们的病毒是否未被检测到,因此Virustotal会将任何测试文件发送给反病毒人员进行分析。曾经有一个关闭它的选项,但几年前就被删除了。如果您多次提交应用程序,这可能会使问题变得更糟,因此我建议您使用http://virusscan.jotti.org/进行初始测试。
答案 1 :(得分:5)
第3个问题:有一个名为virus total的网站可以扫描包含大量防病毒引擎的文件。他们有一个api,所以你可以在构建过程中做这一部分。
另外,一些类似的问题可能有所帮助:
Antivirus False positive in my executable