我对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/

10-10 18:23