2017-01-17 17 views
3

Я только что нашел, что этот код обнаружен как вирус с некоторыми антивирусными программами.Почему этот короткий код C обнаружен как Вирус?

#include <stdio.h> 

char* func(char *str) { 
    return str; 
} 

void main() { 
    char *str = "What the hack\n"; 
    char *str2 = func(str); 
    printf(str2); 
} 

VirusTotal результат сканирования изображения:

enter image description here

Вы знаете, почему ??

+0

Я скомпилировал, не вирус. Возможно, на вашем компьютере есть некоторые вирусы. – user3629249

+1

Возможно, потому что в нем есть слово «взломать»? В любом случае, я не уверен, что это вопрос, связанный с программированием? – paxdiablo

+0

независимо от того, что может позволить Visual Studio, возвращаемый тип из 'main() 'является ALWAYS' int' – user3629249

ответ

0

Вопрос:

Ваша программа представляет собой исполняемый файл, который вы собрали. Это означает, что у него нет фона. Ваша программа будет создавать меньше флагов, если, к примеру, у нее был связанный с ней verified publisher. See this post for some more detail on that. Кроме того, ваше приложение запускается невидимо; то есть он не позволяет вводить пользователя. That is often a 'red flag' that will be detected by some antivirus programs.

Доказательство:

Ваша первоначальная программа выглядит следующим образом, когда я скомпилировать его: as-is Однако я изменил программу так:

#include <stdio.h> 

char* func(char *str) { 
    return str; 
} 

void main() { 
    char str[] = "What the heck\n"; 
    char *str2 = func(str); 
    printf(str2); 
} 

программа выглядит как это (слово было изменено на heck и инициализировано по-разному):

slightly altered program

Обратите внимание, что это выглядит точно то же самое.

Теперь, когда я изменить программу так:

#include <stdio.h> 

//char* func(char *str) { 
// return str; 
//} 

void main() { 
    char str[] = "What the heck\n"; 
    //char *str2 = func(str); 
    //printf(str2); 
} 

результаты выглядеть следующим образом:

near-empty program