微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

防病毒软件将已编译的C ++文件检测为木马

如何解决防病毒软件将已编译的C ++文件检测为木马

我已经用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报告的病毒类型。

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

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

编辑2:

在我看来,如果编译器被感染并且正在添加代码,那么我也许可以通过反编译器/反汇编器看到它,并向其提供可执行文件。我下载了在"snowman"处找到的C ++反编译器,并在文件中使用了它。问题在于代码从原始可执行文件的7行增加到5265,很难理解。如果有人对逆向工程有一定的经验,请在下面的评论中找到原始文件链接

解决方法

这可能是由两件事引起的

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

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

,

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

您的情况有点可疑,因为触发的AV程序数量如此之多。虽然我从未听说过mingw受到损害,而且粗略的google搜索并没有改变这一点,但这并非不可能。损害编译器无疑是传播病毒的有效方法。最著名的例子是Ken Thompson hack

当然也有可能您的计算机感染了非Mingw起源的病毒,该病毒只是将自身插入磁盘上发现的新可执行文件中。用通常的方法很容易找出来。出发点可能是使其他一些(非Mingw)新的可执行文件接受在线检查。他们应该触发相同的AV程序。

请注意,尽管我有一些一般的IT经验,但是我没有特殊的IT安全知识;以我所说的一切作为您自己的研究和行动的起点。

,

更新

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

很有趣,当我在代码中添加了更多行时,AV不再将其识别为病毒。让您想知道所使用的哈希函数如何工作,以及它与程序的实际内容之间的关系。

这样就解决了,一切都很好,只是有些AV松懈(我想这是原因)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?