运行最简单的 C++ 时,AVG 访问被拒绝警告;程序
我正在运行一个非常简单的 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 会将空的 main 方法报告为特洛伊木马,但如果包含 iostream 标头却不会?
更新:
我在 main 方法中添加了一个 return 语句,现在我发现只有在返回 0 时才会出现错误。任何其他返回值似乎都工作正常。
这是怎么回事?
I am running a very simple C++ program:
#include <list>
#include <vector>
int main(int argc, char **args) {
}
I go to the command prompt and compile and run:
g++ whatever.cpp
a.exe
Normally this works just fine. It compiles fine, but when I run it it says Access Denied and AVG pops up telling me that a threat has been detected Trojan Horse Generic 17.CKZT
. I tried compiling again using the Microsoft Compiler (cl.exe) and it runs fines. So I went back, and added:
#include <iostream>
compiled using g++ and ran. This time it worked fine.
So can anyone tell me why AVG would report an empty main method as a trojan horse but if the iostream header is included it doesn't?
UPDATE:
I added a return statement to the main method and now I find that I only get the error if I return 0. Any other return value and it seems to work fine.
What's going on here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不是第一个遇到防病毒软件误报的人。
可能发生的情况是,防病毒启发式方法在程序中存在的标准运行时库上出错,因为恶意软件也使用它们。当然,合法软件也使用它们!事实上,它没有在
iostream
上出错,这可能意味着iostream
在恶意软件编写者中并不是很受欢迎。You're not the first person to encounter false positives by antivirus software.
What probably happened is that the antivirus heuristics tripped up on the standard runtime libraries present in your programs, since malware uses them as well. Of course, legitimate software uses them too! The fact that it didn't trip up on
iostream
probably means thatiostream
isn't very popular among malware writers.如果您只想尽快解决问题,
只需将可执行文件的文件夹放入AVG的白名单即可。
我的首选步骤:
到像这样的在线病毒/恶意软件扫描程序:
如果他们报告“误报”,则插入已编译可执行文件的路径
进入 AVG 的白名单,
所以它不会扫描该文件夹。
我不熟悉 AVG,
但每种防病毒软件
有一个从扫描中排除文件的选项。
如果您足够勇敢,请调试可执行文件并找到导致调用的原因。
如果
另一种解决方案可能是虚拟化轻量级 Linux 系统,
在其上安装 gcc(当然还有 g++),并使用“g++ 专用环境”
到
开发您的命令行应用程序。
// 第一步是此对话的总结.
// 如果您将源代码和您编译的“受感染”可执行文件发送给我,那么我会检查它。
// (C++)
main
函数中缺少return
语句意味着返回 0
。If you only want to overcome the problem as fast as possible,
just put the folder of the executables into AVG's whitelist.
My preferred steps:
to an online virus/malware scanner like these:
if they report 'false positive', then insert the path of the compiled executables
into AVG's whitelist,
so it doesn't scan that folder.
I'm not conversant with AVG,
but every antivirus
has an option to exclude files from scan.
If you're brave enough, debug the executable and find the causing call.
An alternative solution may be to virtualize a lightweight linux system,
install gcc (with g++, of course) on it, and use that "g++ dedicated environment"
to
develop your commandline apps.
// The 1st step is a sum-up of this conversation.
// If you send me the source and the 'infected' executable that you compiled, then I'll check it.
// The missing
return
statement in the (C++)main
function meansreturns 0
.