我对C语言有些生疏,但我遇到了一个奇怪的问题:
我写了这个程序:
#include <stdio.h>
main()
{
int n;
n=1;
while (n>0)
{
puts("Write a number: ");
scanf(" %d",&n);
printf("This is the number you wrote: %d\n", n);
}
}
显然没有语法错误,据我所知,也没有任何编译错误。它编译和构建得很完美。
现在,如果我切换这条线:
puts("Write a number: ");
有了这个:
printf("Write a number: ");
它编译时没有错误,但是当编译的对象启动时,它会立即停止,并弹出一个防病毒警告,说它识别了一个特洛伊木马。在得出任何结论之前,我构建了它几次,在得到相同的消息之后,我在virustotal.com上扫描了它,结果是this。
好吧,我知道在给定目标的情况下,puts实际上比printf更正确,但它仍然应该工作得很好…
这里怎么了?
我用的是avg反病毒,还有pelles c编译。
提前谢谢。
最佳答案
很明显是假阳性。生成的机器代码恰好与恶意软件数据库中的代码相似。这与puts()
的使用无关。
关于c - 为什么将此琐碎的C程序检测为病毒?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19458884/