我写了这个程序:
#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 https://www.virustotal.com/pt/file/54c695f6636a166570e794282d293d0d710726b57e27f5f834744e1e584a6735/analysis/1382101391/结果是。
好吧,我知道puts
实际上比更正确printf
考虑到目标,但它仍然应该工作得很好。
这是怎么回事?
我使用AVG杀毒软件和Pelles C进行编译。
显然,这是误报。生成的机器代码恰好类似于恶意软件数据库中的代码。这与使用无关puts()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)