为啥这段代码会导致 Windows Defender 发疯,并将这段代码识别为名为 Ludicrouz.j 的木马

Posted

技术标签:

【中文标题】为啥这段代码会导致 Windows Defender 发疯,并将这段代码识别为名为 Ludicrouz.j 的木马【英文标题】:Why does this code cause Windows Defender to go crazy and identify this code as a *** called Ludicrouz.j为什么这段代码会导致 Windows Defender 发疯,并将这段代码识别为名为 Ludicrouz.j 的木马 【发布时间】:2020-04-05 01:04:36 【问题描述】:

我正在使用名为 Raylib 的库开发桌面应用程序,对于那些不知道 Raylib 是什么的人来说,它是一个用于制作游戏的开源渲染 API。默认情况下,Raylib 不允许您调整大小或最大化为窗口。为了解决这个问题,我找到了这段代码:

void ToggleGlutNormalWindow(LPCTSTR szWindowTitle)


    long dwStyle;

    HWND hwndGlut;

    hwndGlut = FindWindow(NULL, szWindowTitle);

    dwStyle = GetWindowLong(hwndGlut, GWL_STYLE | WS_THICKFRAME | WS_SIZEBOX);
    // Flips Between On and Off
    dwStyle ^= WS_MAXIMIZEBOX | WS_THICKFRAME | WS_SIZEBOX;
    SetWindowLong(hwndGlut, GWL_STYLE, dwStyle);

正如您可能从我的标题中看出的那样,在编译和运行时,对我来说,这会产生一个 Windows Defender 警告,告诉我它检测到了一个名为 Ludicrouz.j 的木马。

有谁知道启用最大化按钮和调整大小的更好方法,或者您知道为什么这会被检测为病毒?

【问题讨论】:

Windows Defender 应该为您提供该木马描述的链接,阅读该描述可能有助于您了解为什么检测到您的程序。 【参考方案1】:

这是编程中的常见问题,并没有简单的答案。

防病毒程序保留一个恶意软件签名数据库,范围从引用特定 DLL 到实施特定算法(如加密货币矿工)或更奇特的东西(如 rowhammer)。这是相当有效的,可以轻松捕获衍生或简单的恶意软件,并且误报的可能性很低。不过,可能会发生误报,但我在您的代码中没有看到任何会导致误报的内容。

然而,越来越多的防病毒软件开始扫描可执行文件并将其分析结果发送到防病毒公司的云服务。如果他们的数据库中没有类似的东西,防病毒程序会将可执行文件标记为“低信誉”或“无法识别”或“未验证”。这相当有效,因为绝大多数人只会运行非常常见的程序,例如办公室编辑器和网络浏览器。当您是一名程序员并且每天生成数十次“低声誉”可执行文件时,就会出现问题。

这很可能是您遇到的情况。

【讨论】:

【参考方案2】:

运行 CCleaner 并尝试重新创建消息后,问题已解决。我仍然不太清楚它为什么这样做,因为我无法获得Krantz 建议我应该做的链接。感谢Krantz 的帮助,感谢Ken Wayne VandeLinde 在问题中修复我的代码。祝大家有个美好的一天!

【讨论】:

请不要使用答案说“谢谢”或与他人交谈。答案是提供解决方案; SO 不是留言板或论坛,它就像是编程问答的在线参考书。

以上是关于为啥这段代码会导致 Windows Defender 发疯,并将这段代码识别为名为 Ludicrouz.j 的木马的主要内容,如果未能解决你的问题,请参考以下文章

为啥这段代码会导致编译器在 Xcode 中报告“未使用的变量”

为啥这段代码不会导致无限循环?

为啥此代码会导致 Excel 无法正常关闭?

为啥这段代码不会导致内存泄漏? [复制]

为啥释放内存会导致分段错误?

为啥一个带有图像的按钮会导致 titleLable 文本被截断?