Почему AVG (антивирус) обнаруживает исполняемый файл, созданный из Dev-C ++, как вирус? - PullRequest
8 голосов
/ 03 ноября 2011

Я создал проект Dev-C ++ по умолчанию и вместо обычного return 0; у него было return EXIT_SUCCESS;, и после компиляции и запуска мой антивирус предупредил меня, что исполняемый файл - это вирус.

Я попробовал один и тот же код с Visual C ++, Eclipse и Codeblocks, и все они успешно скомпилировали его ... поэтому я немного запутался здесь ...

- Почему AVG обнаруживает исполняемые файлы, созданные из Dev-C ++, с помощью строки return EXIT_SUCCESS; как вирус, когда другие подобные макросы работают отлично?

Ответы [ 3 ]

14 голосов
/ 02 июля 2013

Почему AVG маркирует мою программу на C ++ вирусом?

Например, вот программа на C ++, которую AVG обнаруживает как вирус:

#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
    cout << "done";
    return 0;
}

Запустив исполняемый файл, я получаю всплывающее окно AVG с таким текстом:

AVG Resident Shield Alert
Threat detected!
File name: c:\Documents and Settings\eleschinski\Desktop\workspace\CppApplication_2\dist\Debug\MinGW-Windows\cppapplication_2.exe
Threat name:  Trojan horse Agent3.CJAI (More Info)
Move to Vault (Reccommended)
Go to file
Ignore the threat

Скриншот того, что делает AVG:

enter image description here

Резюме, что здесь происходит?

AVG антивирус - это программа, которая запускается на вашем компьютере и использует эвристические и другие неточные алгоритмы для определения того, какие программы имеют нежелательные злые планы. AVG принимает в качестве входных данных содержимое вашего исполняемого файла и решает, что ваша программа небезопасна.

Авторы антивирусов используют стратегию Enumerating Badness для выявления вредоносных программ в мире, и они возвращаются, чтобы укусить их, потому что это неправильный подход к проблеме обнаружения вредоносных программ. Одна из проблем с перечислением зла - ложные срабатывания, проблема, с которой вы столкнулись сейчас.

Шаги для лучшего понимания проблемы:

Шаг 1. Сначала вы хотите быть очень уверенными в том, на какой файл жалуется AVG. Для этого перейдите в AVG -> Сервис меню -> файл сканирования. Выберите испорченный исполняемый файл или файл, определенный в вашем окне угрозы. AVG мгновенно сканирует файл и рекомендует добавить его в хранилище. На данный момент вы можете знать, что AVG считает, что этот файл является вредоносной программой.

Шаг 2. Получите второе мнение об этом файле вредоносного ПО / вируса, а еще лучше - получите 50 независимых вторых мнений. Зайдите на сайт https://www.virustotal.com, там вы можете бесплатно загрузить свой файл, и он будет проанализирован примерно 50 различными антивирусными программами. Если большинство из них считает, что это вирус, то AVG преуспел. Но если только несколько антивирусов помечают ваш файл как злой, возможно, AVG имеет ложный положительный результат.

Шаг 3. Простой способ убедить AVG в том, что ваша программа на C ++ безопасна, - это добавить оператор c ++: system("pause"); в начале вашей программы на C ++, перекомпилировать и перезапустить. Для меня AVG тогда предупреждает меня об этом, я нажимаю игнорировать, затем он все равно позволяет мне его запустить. Кроме того, попробуйте использовать «return 1» вместо «return 0» в конце вашей основной функции. Это позволит вам запустить его. Если это кажется странным, это так. Авторы вирусов умнее, чем авторы антивирусов, благодаря тому, что антивирусные программы видят множество ложных срабатываний.

Шаг 4. Проверьте, можете ли вы занести в белый список вашу программу. Зайдите в «Virus Vault» в AVG. AVG -> История меню -> Virus Vault. Найдите позиции, представляющие вашу оскорбительную программу на C ++, и высвободите их из хранилища вирусов или внесите их в белый список и повторите попытку.

Решения:

Вариант 1: Признать, что вирусописатели выигрывают войну против антивирусного программного обеспечения. Проще спрятать что-то, чем обследовать все и обнаружить все зло. AVG не может определить разницу между легитимным вирусом и какой-то только что созданной программой на С ++. Получите новое антивирусное программное обеспечение или операционную систему, которая не требует антивирусного программного обеспечения (linux), или обходитесь без антивирусного программного обеспечения вместе и сохраняйте множество автономных резервных копий вне сети.

Вариант 2: Скажите AVG прекратить анализ файлов с расширениями .EXE. ВНИМАНИЕ это уменьшит способность AVG защищать ваш компьютер от реальных вирусов и вредоносных программ. Зайдите в консоль AVG -> Сервис -> Расширенные настройки -> Антивирус -> Резидентский щит -> Настройки эксперта. Вы увидите текстовое поле с меткой: «всегда проверять файлы со следующими расширениями». Удалите EXE; из этого текстового поля. Сохраните и попробуйте перезапустить вашу программу. AVG больше не будет жаловаться на ваш исполняемый файл нечто.exe.

Вариант 3: Работайте с программой на C ++ до тех пор, пока она не перестанет называться вирусом. Добавьте несколько #include библиотек, исключая некоторые другие. Несущественное изменение может повлиять на то, что AVG решит, что ваш файл является злокачественным.

и если кто-либо из AVG заинтересован в поиске этой ошибки, здесь это ложно-положительный исполняемый файл для вышеупомянутого

5 голосов
/ 03 ноября 2011

Может быть , это осветит все это, так как кажется, что AVG почему-то не нравится комбинация (возможно) более старой версии gcc (так как Dev-C ++ больше не находится в разработке) и пустая программа.

1 голос
/ 03 ноября 2011

Когда вы Google "определите EXIT_SUCCESS", вы увидите, что это должно быть "0".

Попробуйте декомпилировать ваш исполняемый файл, используя дизассемблер IDA Pro + Hex Rays Decompiler, и посмотрите, что на самом деле там происходит:)

...