为啥我的防病毒软件认为我的 C++ 程序是病毒,我该如何修复它?

Posted

技术标签:

【中文标题】为啥我的防病毒软件认为我的 C++ 程序是病毒,我该如何修复它?【英文标题】:Why does my Anti-Virus think that my C++ program is a virus and how can I fix it?为什么我的防病毒软件认为我的 C++ 程序是病毒,我该如何修复它? 【发布时间】:2021-04-26 23:30:11 【问题描述】:

在编译和运行我的程序时,我的防病毒软件 (Kaspersky Security Cloud) 会自动删除可执行文件并告诉我重新启动计算机,以便它可以对我的计算机进行消毒。我有几个问题。

    为什么 AV 认为我的 exe 是病毒? 如何阻止它认为它是病毒? 如何检索我的可执行文件?

非常感谢任何帮助!

【问题讨论】:

关掉你的AV? 只需将构建文件夹添加为 AV 中的例外即可。 一些 AV 将可执行编译检测为恶意行为。为了避免被检测到,请将您的 Debug/Release 文件夹添加到 AV 的例外列表中。 这是一个众所周知的问题,快速搜索应该会给你很多有同样问题的人。如前所述,两种解决方案是关闭 AV,或者将您的项目目录添加到 AV 的白名单中。 另一种解决方案是获得更好的 AV。众所周知,卡巴斯基、诺顿和 AVG 非常贪婪。我已经使用 Eset NOD32 很长时间了,从来没有遇到过问题。 【参考方案1】:

您的防病毒软件应将可执行文件放入隔离区,您可以在其中判断隔离文件是否实际上是恶意的。该视频可能会帮助您:https://youtu.be/NA6HrN-gO5A。

如前所述,将构建文件夹或项目目录添加到 AV 的例外列表中也是一种解决方案。

防病毒软件可以出于多种原因将程序视为病毒。

程序是否打开端口来发送/接收数据 它是否从 Internet 请求可能被视为恶意软件的内容 您使用的协议是否不安全

【讨论】:

这与它正在做的事情并不接近。 OP 正在经历的是启发式分析误报。您的建议在软件已经运行后处理防火墙。这是在软件运行之前触发 AV 软件。 @Andy 你是说防病毒软件无法查看可执行文件的功能来确定它是否是恶意的?据我了解,防病毒软件可以根据先前定义的签名或更高级的方法(如代码分析)在可执行文件执行之前确定它是否是恶意的。我可能对他们能做什么有误解? @anthony 没有。我建议制作一些程序并在一台机器 exe/msi 文件上编译它到你旁边的机器上,它会启动 AV,此时你的函数名和你在花哨的代码中拥有的所有内容都被调低到 0 和 1。 AV 主要作用于程序的行为。 @CEPB 我目前正在研究安全性,所以我可能真的误解了基于主机的防病毒软件的功能或签名的工作原理。如果编译代码的一部分(0s 和 1z)相似或匹配先前已被识别为恶意软件的签名,是否不会被隔离?还是防病毒软件仅将整个文件与整个签名进行比较,而不是像我想象的那样比较部分? 自从我自己研究安全性以来已经有一段时间了,但是一些 AV 可能正在使用签名,但我相信它们中的大多数都是基于行为的。尝试写入 Windows 系统文件夹 (Windows/Windows64),只需一个字节的 AV 就会阻止你。

以上是关于为啥我的防病毒软件认为我的 C++ 程序是病毒,我该如何修复它?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的防病毒软件阻止我的代码执行...?

为啥防病毒似乎针对特定数字? [关闭]

避免防病毒检测 C++

为啥我电脑里有个MSYH.TTF是病毒吗?

为啥我的冻结应用程序被检测为可能的病毒?

防病毒软件说我的程序可疑