如何防止我的可执行文件被AV视为恶意软件或病毒?


15

我正在创建一个软件,该软件将在Windows上运行,并像游戏的启动器一样,充当客户端PC中的自动更新程序和文件验证程序。

我不明白的一件事是,为什么我的防病毒软件(Avast)认为我的exe文件很危险,并且在不要求将其放入沙箱中以安全使用的情况下不会启动它。

我的软件有没有应遵守的规则,被视为良好的规则,还是应该为某些数字签名和其他东西支付数百美元?

我在MS Visual Studio 2010中使用C#。

VirusTotal报告。使用WebClient()类,不进行DLL注入,可用作远程文件下载器。

并不是像它警告病毒一样,而是“建议”将其沙箱化。看截图:在此处输入图片说明


1
建议您先将程序上传到virustotal.com,以了解认为您的应用程序可疑的供应商数量。如果所有AV程序都标记了您的应用,则必须找出该AV程序可能认为可疑的代码在做什么。确定AV供应商使用的启发式方法几乎是不可能的-我怀疑他们会告诉您。如果只有一两个,则可以向他们举报误报(检查他们的网站,或通过Google“供应商名称举报误报”)。缺点是您必须在软件的每个发行版中执行此操作。
Jan Doggen

它没有做任何与DLL注入相关的活动,是吗?
l46kok

确保您的计算机没有感染病毒。除非有感染,否则我从未见过这种行为。
2013年

4
您可以开始从代码中删除功能,直到满足AV要求或没有剩余代码为止(以先到者为准)。应检查其拆卸使AV满意的零件。
ugoren

1
问题仅在开发期间发生吗?当编译器生成可执行文件时,我本人在工作中曾多次遇到该问题。如果是这样,解决方案的确是卸载反程序软件。

Answers:


22

“文件普及率/信誉度低”表示Avast根据程序的使用情况使用信誉系统。只有您的程序已被足够的用户安装并“标记为仁慈”,它才会赢得良好的声誉,并且该建议将消失。Avast称其为FileRep云功能,并说:“所有新的未知文件都有潜在的危险。每当它们传播时,就不再需要对它们进行自动沙箱处理”。这是针对小型软件公司的PITA(Avast并非唯一这样做,请注意,例如Symantec的Suspicious Insight)。Avast建议的一件事是“如果对文件进行数字签名,则可以加快这一过程。”

在本地(在计算机上),您可以转到自动沙盒专家设置并禁用信誉低的自动沙盒文件,或者使用自签名证书,但这对最终用户没有帮助。对于那些我建议您使用真实证书的人(要花钱,但Windows也喜欢),并使用此信息更新您的文档。
也许在Avast论坛上还有更多建议。


我有一个类似的问题。您使用了@Deele哪种数字签名解决方案?我没有超过50美元的费用……
巴吉(Basj)

0

除了Jan Doggen所说的以外,其他防病毒软件也进行启发式扫描。

防病毒扫描不仅查看特定的可执行文件是否是已知病毒的精确副本。这可以并且很容易被规避。现在,AV工具会检查特定的行为,例如该工具是否使用网络库,是否进行文件访问/修改,是否在运行时对其自身进行加密/解密等等,并且取决于内部算法(启发式),它会散发出危险。

对抗各种AV错误检测的一种方法是签名混淆。基本上,另一种技术是AV工具将查看可执行文件中是否包含特定的字节流(签名)。如果找到它,就知道它是一种病毒。您可能最终会产生(可执行)代码,其中可能包括AV软件使用的数十亿个签名之一。要删除该特定部分,您需要对可执行文件进行二进制搜索,方法是将可执行文件分为上半部分,另一半部分,然后再次重新扫描,然后重复该过程,直到找到包含签名的部分。一旦找到,就翻转一些位,看看是否仍然可以检测到它。一种更安全的方法是只更改源代码,然后查看它是否在该位置吐出另一个字节流。

您所开发的软件类型将100%遇到此问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.