病毒扫描程序导致应用程序加载缓慢

Posted

技术标签:

【中文标题】病毒扫描程序导致应用程序加载缓慢【英文标题】:Virus scanner causing a slow application load 【发布时间】:2016-06-29 06:26:50 【问题描述】:

我创建了一个 C# 应用程序,用于为客户端部署一组非常特定的应用程序。此应用程序包含根据客户的请求在单个可执行文件中完整部署我们的整个应用程序套件所需的所有资源 - 在嵌入之前进行压缩。

但是,此应用程序非常大 (150mb),每次启动时,都会触发来自 Windows Defender 或客户端 AV 的病毒扫描。这会导致加载时间过长,超过 5 分钟。

有没有办法对我的应用程序进行签名或以其他方式将其列入白名单,以便病毒扫描程序在加载时不会对其进行扫描?随着内容的变化,应用程序会在每次部署时更改其签名。我已经尝试将它所在的目录列入白名单,将文件路径列入白名单,但不管病毒扫描程序不断触发。

我已通过以下操作确认它是病毒扫描程序:

1) 应用程序启动时,病毒扫描进程会占用整个 CPU 内核

2) 将 Debugger.Launch() 调用作为应用程序中的第一个 LOC 调用几分钟后不会被调用

2) 禁用病毒扫描程序后,应用程序在 5 秒内加载完毕。

不幸的是,禁用病毒扫描程序不是客户端的选项。我在开发部署应用程序时在本地使用它,但是在客户端的机器上关闭它——或者甚至建议关闭它——不会很好,而且有充分的理由。

【问题讨论】:

【参考方案1】:

反病毒行为并不罕见,因为您的应用程序表现出病毒的主要迹象:正在解压缩的压缩资源。 AV 产品当然不知道您的程序是如何压缩的,因此它必须花费大量时间尝试多种方法进行解包,以确保这些方法都不会产生有害代码。

路径白名单不可靠;任何能够覆盖白名单可执行文件的病毒都会绕过 AV。

我只是将问题返回给客户。他们要求一种非常不寻常的可执行文件形式,而这正是 AV 所要防范的。

【讨论】:

真的有那么不寻常吗? MSI 也只是一个打包的可执行文件,但我们的团队认为滚动我们自己的部署会比处理 MSI 包更快、更灵活。 @MichaelSchultz:除了你的 AV 产品会知道 MSI 是什么,以及应该如何扫描它。 好的,我会把这个转达给客户。这是有道理的,无论如何都是我所期望的。谢谢。

以上是关于病毒扫描程序导致应用程序加载缓慢的主要内容,如果未能解决你的问题,请参考以下文章

Perl、ClamAV、扫描流中的病毒

CAD打开时弹出“试图加载格式不正确程序”?

检测病毒扫描程序

防病毒软件实际监控啥?

从 Delphi 应用程序中激活文件病毒扫描

检测 Windows 机器是不是运行病毒扫描程序? [复制]