运行最简单的C ++程序时AVG Access拒绝警告

时间:2010-06-17 22:50:10

标签: c++ g++ iostream antivirus

我正在运行一个非常简单的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,我只会得到错误。任何其他返回值,它似乎工作正常。

这里发生了什么?

2 个答案:

答案 0 :(得分:4)

You're not the first person to encounter false positives by antivirus software.

可能发生的事情是,由于恶意软件也使用它们,因此防病毒启发式方法会绊倒程序中存在的标准运行时库。当然,合法软件也使用它们!事实上它没有在iostream上绊倒,这可能意味着iostream在恶意软件编写者中并不是很受欢迎。

答案 1 :(得分:2)

如果您只想尽快克服问题,请 只需将可执行文件的文件夹放入AVG的白名单中即可。

我的首选步骤:

  1. 为安全起见,您应该发送您的可执行文件
    到这样的在线病毒/恶意软件扫描程序:
    • www.virustotal.com:VirusTotal - 免费在线病毒和恶意软件扫描
    • virusscan.jotti.org/en:Jotti的恶意软件扫描

  2. 如果他们报告“误报”,则插入已编译可执行文件的路径
    进入AVG的白名单, 所以它不会扫描该文件夹。 我不熟悉AVG,但每个杀毒软件 可以选择从扫描中排除文件。

  3. 如果你足够勇敢,请调试可执行文件并找到导致调用的电话。

  4. 另一种解决方案可能是虚拟化轻量级Linux系统,
    在它上面安装gcc(当然用g ++),并使用“g ++专用环境”
    至 开发您的命令行应用程序。


  5. //第一步是this conversation的总结。
    //如果您向我发送了您编译的源代码和“被感染”的可执行文件,那么我会检查它。
    //(C ++)return函数中缺少的main语句表示returns 0