【发布时间】:2017-04-19 00:41:24
【问题描述】:
我创建了一个 C# 程序,最近我注意到,当我使用 IL Merge 将引用的 .dll 合并到一个可执行的 .exe 文件中时,我的 Anti Virus (Avast) 立即将其删除并说它是病毒。我总是做很多备份,所以我用 2 天前的备份测试了同样的东西,我没有遇到这个问题。
所以我逐行删除了我最近的代码,并注意到是什么触发了程序被检测为病毒。我有一个空白,我检查指定路径中是否存在文件列表(在我的应用程序文件夹中,位于 %appdata% 中)。 void 有大约 8 个File.Exists(path) 命令,删除这 8 行我的程序不再被检测为病毒。
所以我的问题是,有没有办法解决这个问题?为什么我的程序仅仅因为我使用File.Exists 而被检测为病毒?
【问题讨论】:
-
A similar question 已被删除,所以我会从那里复制我的评论:鉴于启发式的性质,我认为不可能有明确或持久的答案。是的,
File.Exists(path)可以将其关闭,但我们无法确定;是的,这将是一个朴素启发式的例子,它可能会在下一个版本中改变。发生误报,您可以做的是将您的应用作为误报提交给供应商。 -
在这个例子中,它肯定是 'File.Exists(path)' 设置它,因为我保持所有其他代码相同。
-
理论上你可以使用他们的“report false positive”表单来发送你的应用程序,这样它就不再被报告avast.com/false-positive-file-form.php在实践中,你的请求可能会被忽略,你会遭受其他痛苦也是 - Avast 是报告的误报数量最多的公司之一。
-
问题是。这将是我将发布的第一个应用程序。如果人们看到病毒被触发(不管是误报),我将失去我的合法性。我不希望人们认为他们下载了不安全的东西。
-
我认为它不是代码 File.Exists,它是您的程序正在访问应用程序数据文件夹的内容,不同的路径不会显示为病毒