我正在编写一个使用 SFML 进行渲染/输入的程序。问题是大多数防病毒程序将其检测为某种恶意软件。其中一些在程序启动时立即显示警报(即使在 Visual Studio 中的调试模式下),而另一些则在发生键盘输入时显示。我的问题:1)你知道为什么会这样吗?2)我怎样才能避免它?
ps SFML 是我使用的唯一库,其余的是我的代码 pps 根据我掌握的信息,我猜这是因为拦截键盘事件可以被解释为恶意操作。
我正在编写一个使用 SFML 进行渲染/输入的程序。问题是大多数防病毒程序将其检测为某种恶意软件。其中一些在程序启动时立即显示警报(即使在 Visual Studio 中的调试模式下),而另一些则在发生键盘输入时显示。我的问题:1)你知道为什么会这样吗?2)我怎样才能避免它?
ps SFML 是我使用的唯一库,其余的是我的代码 pps 根据我掌握的信息,我猜这是因为拦截键盘事件可以被解释为恶意操作。
某些使用 DirectInput7 处理键盘的应用程序有时会被某些(愚蠢的)AV 软件和防火墙检测为“键盘记录器”。
如果您在从源代码编译 sfml 后遇到此问题,您的系统是干净的,并且病毒/恶意软件定义是模糊的“通用恶意软件”,那么它很可能是误报。这是极其罕见的,但有时编译软件会在防病毒软件中触发误报(例如,在 mingw 下编译 glib-2.0 会使用 avast 防病毒软件产生大量病毒警报 - 每个使用 gio 的模块测试或程序都会被检测为恶意软件)
当然,也有可能一些 sfml 相关的 dll 被病毒感染——如果你没有自己编译的话。
自己编译的。Avast 和 Microsoft Security Essentials 给了我一个通用的恶意软件警告,诺顿强行删除了可执行文件。
如果您绝对确定这是误报,那么您的防病毒软件之一应该有排除列表。您还可以将库报告为误报给 AV 软件维护者 - 否则如果您决定分发 APP,您的用户将面临同样的问题。此外,如果您打算分发应用程序,我建议您使用预编译的二进制文件。首先,预编译的二进制文件可能不会触发病毒警报,其次,AV 软件可能已经将它们识别为“正常”未感染的可执行文件,第三,您不必等待库编译完成。
如果 AV 软件没有排除列表,或者如果预编译的 pbinaries 也会引起病毒警报,那么您可以从 sfml 切换到其他东西——比如libSDL。