我的C#程序被检测为病毒?

21
我创建了一个C#程序,最近发现当我使用IL Merge将引用的.dll合并成一个可执行的.exe文件时,我的反病毒软件(Avast)立即将其删除,并说这是一个病毒。我总是备份很多,所以我用2天前的备份测试了同样的内容,没有遇到这个问题。
因此,我逐行删除我的最新代码,并注意到触发程序被检测为病毒的是什么。我有一个void,其中我检查一组文件是否存在于指定路径中(在我的应用程序文件夹中位于%appdata%)。该void大约有8个File.Exists(path)命令,删除这8行后,我的程序不再被检测为病毒了。
所以我的问题是,这个问题有解决方法吗?为什么我的程序只是因为使用了File.Exists而被检测为病毒?

2
一个类似的问题 被删除了,所以我会把我的评论从那里复制过来: 我认为由于启发式的本质,可能不会有明确或持久的答案。是的,File.Exists(path) 可能会触发它,但我们不能确定; 是的,这将是幼稚的启发式的一个例子,并且它在下一个版本中可能会改变。虚报事件发生了,您可以将您的应用程序提交给供应商作为虚报事件。 - GSerg
在这个例子中,肯定是 'File.Exists(path)' 触发了它,因为我保留了所有其他代码不变。 - Harry
3
理论上,您可以使用他们的“报告误报”表单来发送您的应用程序,以便不再被报告:https://www.avast.com/false-positive-file-form.php。实际上,您的请求可能会被忽略,您将遭受其他人所遭受的困扰 - Avast 是报告虚假阳性数量最多的之一。 - Wiktor Zychla
1
问题是,这将是我发布的第一个应用程序。如果人们发现触发了病毒警报(无论是误报还是真实),我将失去我的合法性。我不希望人们认为他们已经下载了不安全的东西。 - Harry
欢迎来到真实世界,Neo。说真的,请重写代码,以便不再触发 Avast。没有其他合理的建议。我也经历过这个问题。 - Wiktor Zychla
3
我认为问题不在于代码中的File.Exists,而是你的程序访问了应用数据文件夹,不同的路径不会显示为病毒。 - user1599615
3个回答

18
你是否提供了至少包含“名称、作者和描述”字段(而不是默认值)的AssemblyInfo.cs文件?大约一年前,我遇到了类似的问题,而这个解决方案对我有用。

2
很遗憾,对我来说那个方法没有起作用。还是谢谢你的建议。 - Harry
5
为程序集信息(AssemblyInfo)添加标题、描述、公司、产品和 GUID 值,这对我解决了问题。 - Brendan Cain

11
请稍微修改AssemblyInfo.cs中的“Guid”,然后再试一次。
这对我有用。

0

我建议使用GUID.one为您的程序生成一个新的GUID。对于我来说,只有这个逃过了Windows Defender的侦测,因为当我尝试手动更改GUID时,它被检测为Behavior:Win32/DefenseEvasion.A!ml。您可以在项目的程序集信息中更改GUID。希望这可以帮助到您!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接