10

我已经用 MinGW 为 Windows 安装了一个 c++ 编译器。我试图制作一个简单的程序:

#include <iostream>
using namespace std;

int main() {
   cout << "Hello World!";
   return 0;
}

并将其保存为try.cc. 之后我在文件夹中打开 cmd 并运行g++ try.cc -o some.exe. 它生成some.exe了,但我的防病毒软件 (avast) 将其识别为恶意软件。我认为这可能是误报,但它明确表示这是一个木马。

我从病毒箱中删除了文件并上传到“https://www.virustotal.com/” 结果: https://i.stack.imgur.com/jC2oz.png

72 个引擎中有 24 个将其检测为恶意软件,其中很多是木马。

这是误报吗?为什么它会被检测为木马?如果是这样,我如何避免每次制作新程序时都收到此警告?

编辑:

感谢大家的帮助,我用 2 次杀毒软件对我的电脑进行了全面扫描,一切看起来都很干净。我还对 MinGW 文件夹进行了扫描,但什么也没有。

每次我制作一个新的 c++ 程序时,问题都会不断出现。我尝试修改代码和名称,但 AV 一直将其检测为病毒。有趣的是,更改代码会改变 av 报告的病毒类型。

我仍然不能 100% 确定编译器是干净的,所以我不知道是否应该忽略它并运行程序。我从“https://osdn.net/projects/mingw/releases/”下载了MinGW

如果有人知道如何完全确定创建的可执行文件不是病毒,只有误报我会很高兴他们分享它。

编辑2:

我突然想到,如果编译器被感染并且它正在添加代码,那么我可能能够使用反编译器/反汇编器看到它,并为其提供可执行文件。我下载了一个我在这里找到的“雪人”的 c++ 反编译器,并在文件上使用了它。问题是代码从原始可执行文件中的 7 行变为 5265 行,有点难以理解。如果有人对逆向工程有一定的经验,原始文件的链接在下面的评论中。

4

3 回答 3

4

这可能是由两件事引起的

  1. 它确实是一个特洛伊木马,您从某些地方下载了您的 mingw,这些地方的代码已被更改,以便在您创建的每个程序中添加病毒。几乎所有商业编译器都这样做了,所有“免费”(破解)版本都在其中包含该代码,每次编译代码时,病毒都会添加到您的 exe 中。

  2. 出于某种原因,您的 exe 的哈希值与现有病毒匹配,您可以通过更改代码中的一个字符来确认这是否匹配,例如“hello world!” “你好世界?” 看看它是否仍然被认为是病毒,如果是,那么您的编译器很有可能将病毒添加到您的程序中。

于 2020-11-10T13:10:12.977 回答
4

这个问题之前就出现过。使用mingw编译的程序往往会触发偶尔的蛇油(即防病毒程序)警报。这可能是因为 mingw 是病毒作者的流行工具链,因此它的输出与真阳性中出现的通用模式相匹配。这在 SE 上也一遍又一遍地出现(例如https://security.stackexchange.com/questions/229576/program-compiled-with-mingw32-is-reported-as-infected)。[咆哮] 在我看来,这是 AV 公司无能的真实证据,因为它很容易修复,并且让您怀疑他们的程序的核心功能是否得到更好的实施。[/咆哮]

不过,您的情况有点可疑,因为触发的 AV 程序的数量如此之多。虽然我从来没有听说过 mingw 遭到入侵,而且粗略的谷歌搜索并没有改变这一点,但这并非不可能。破坏编译器当然是传播病毒的有效方法。增加间接级别的最著名的例子是Ken Thompson hack

当然,您的计算机也有可能感染了非 mingw 起源的病毒,该病毒只是将自身插入到它在磁盘上找到的新可执行文件中。这应该很容易通过通常的方式找到。一个起点可以是对一些其他(非 mingw)新的可执行文件进行在线检查;他们应该触发相同的 AV 程序。

请注意,虽然我有一些一般的 IT 经验,但我没有专门的 IT 安全知识;把我所说的一切作为你自己研究和行动的起点。

于 2020-11-10T18:10:30.330 回答
1

更新:

这实际上是某种哈希冲突,编译器没有被感染。我确实按照建议多次更改了打印函数中的字符串,甚至添加了换行符,但每次我的 AV 都将其检测为恶意软件。我还尝试删除一些代码行(包含和打印),它也将其检测为恶意软件。

有趣的是,当我在代码中添加更多行时,AV 停止将其识别为病毒。让您想知道使用的散列函数是如何工作的,以及它与程序的实际内容有何关系。

所以解决了,一切都很好,只是一些 AV 马虎(我想这是有原因的)。

于 2020-11-14T00:23:56.527 回答