问题:
您的程序是一个可执行文件,是由您编译而成的。这意味着它没有任何背景。例如,如果您的程序与已验证的发布者相关联,那么您的程序将引起更少的警报。请参阅此帖子以获取更多详细信息。 此外,您的应用程序在运行时是不可见的;也就是说,它不允许用户输入。这通常是一种“红旗”,会被一些杀毒软件检测到。
证明:
当我编译您的初始程序时,它看起来像这样: 然而,我对程序进行了修改:
#include <stdio.h>
char* func(char *str) {
return str;
}
void main() {
char str[] = "What the heck\n";
char *str2 = func(str);
printf(str2);
}
程序看起来像这样(单词被更改为“heck”并以不同的方式初始化):
请注意它看起来完全一样。#include <stdio.h>
//char* func(char *str) {
// return str;
//}
void main() {
char str[] = "What the heck\n";
//char *str2 = func(str);
//printf(str2);
}
结果看起来像这样:
char*
的printf
编译正常。如果您无法控制内容,则可能不是一个好主意,但在这种情况下,您绝对可以控制它。 - paxdiablogcc
编译器对printf()
语句的警告:warning: format not a string literal and no format arguments [-Wformat-security] - user3629249