我正在运行一个非常简单的C ++程序:
#include <list>
#include <vector>
int main(int argc, char **args) {
}
我转到命令提示符并编译并运行:
g++ whatever.cpp
a.exe
通常情况下这很好用。它编译得很好,但是当我运行它时会说拒绝访问并且AVG弹出告诉我已经检测到威胁Trojan Horse Generic 17.CKZT
。我尝试使用Microsoft编译器(cl.exe)再次编译,它运行罚款。所以我回去了,并补充道:
#include <iostream>
使用g ++编译并运行。这次工作得很好。
所以有人可以告诉我为什么AVG会报告一个空的主方法作为特洛伊木马,但如果包含iostream标题则不会?
更新:
我在main方法中添加了一个return语句,现在我发现如果我返回0,我只会得到错误。任何其他返回值,它似乎工作正常。
这里发生了什么?
答案 0 :(得分:4)
You're not the first person to encounter false positives by antivirus software.
可能发生的事情是,由于恶意软件也使用它们,因此防病毒启发式方法会绊倒程序中存在的标准运行时库。当然,合法软件也使用它们!事实上它没有在iostream
上绊倒,这可能意味着iostream
在恶意软件编写者中并不是很受欢迎。
答案 1 :(得分:2)
如果您只想尽快克服问题,请 只需将可执行文件的文件夹放入AVG的白名单中即可。
我的首选步骤:
如果他们报告“误报”,则插入已编译可执行文件的路径
进入AVG的白名单,
所以它不会扫描该文件夹。
我不熟悉AVG,但每个杀毒软件
可以选择从扫描中排除文件。
如果你足够勇敢,请调试可执行文件并找到导致调用的电话。
另一种解决方案可能是虚拟化轻量级Linux系统,
在它上面安装gcc(当然用g ++),并使用“g ++专用环境”
至
开发您的命令行应用程序。
//第一步是this conversation的总结。
//如果您向我发送了您编译的源代码和“被感染”的可执行文件,那么我会检查它。
//(C ++)return
函数中缺少的main
语句表示returns 0
。