Мои программы заблокированы антивирусом avast
Я программист-любитель, и я впадаю в отчаяние и злюсь из-за большой проблемы: большинство моих программ заблокированы антивирусом avast, а некоторые нет, и я не понимаю, почему. Чем больше я пытаюсь исследовать, тем меньше понимаю, в чем проблема.
Я прошу вашей помощи, чтобы найти решение, чтобы мои программы больше не блокировались, или, по умолчанию, по крайней мере, некоторые важные подсказки, которые объяснили бы, почему это может иметь место. В Интернете уже есть много тем об этом. Однако большинство из них дают только поверхностные ответы: они просто объясняют, как антивирус работает с сигнатурами и эвристикой обнаружения, или утверждают, что вам просто нужно добавить приложение-нарушитель в белый список, не задавая никаких других вопросов. Хотя это, безусловно, правильно, в моем понимании это неприемлемые ответы, потому что у меня все еще остаются собственные программы, которые отказываются работать без какой-либо конкретной идеи начать расследование.
Прежде всего, единственный антивирус, блокирующий мои программы - это avast 7.x. Никакой другой антивирус не видит неудобств для запуска моего программного обеспечения. Во-вторых, я не аваст себя; это установлено на машине друга. У меня есть windows 7, у него есть windows XP. Я полностью уверен, что проблема только в avast: когда она временно отключена или если программа добавлена в белый список, все работает хорошо, как и ожидалось.
Три разные программы в беде:
- Текстовый редактор с целью заменить блокнот Windows, сохраняя при этом простой, эффективный и настраиваемый
- Небольшой любительский аудиоплеер очень прост в использовании
- Клиентская программа игровой онлайн-платформы, на данный момент насчитывающая более 1000 пользователей.
Первый - с открытым исходным кодом, я могу дать ссылку на исполняемый файл и исходный код, если это необходимо. Два других являются закрытыми исходными кодами, но бесплатны для использования, я могу дать ссылку только на исполняемый файл текущей версии. единственные очевидные общие черты между этими тремя программами - это я как разработчик, мой компьютер с Windows 7, который их скомпилировал, семейство компиляторов, которое является MinGW/GCC, и все они - приложения Win32 GUI без какой-либо платформы (без MFC, без WPF, без QT, WXWidgets или что-то еще, просто чистые приложения Win32/C GUI)
Вот мои наблюдения и хотя пока:
- Версии 1.1, 1.2.1 и 1.3 моего текстового редактора заблокированы. Они находятся на C, а не на C++, скомпилированы с GCC 3.4.5 в режиме Unicode и распространяются в переносимых zip-файлах (под переносным я просто имею в виду отсутствие установщика и установка не требуется)
- Версия 1.4.1 того же текстового редактора не заблокирована. Он был скомпилирован с GCC 4.7.2, все еще в C, а не в C++, все еще в режиме Unicode и все еще в виде переносимого zip-файла.
- Все версии моего аудиоплеера заблокированы; они в C++ с включенными функциями 0x, скомпилированы GCC 4.7.2 в режиме ANSI, распространяются в переносимом zip-файле
- Текущая версия моей игры, 1.7.2, не заблокирована. он находится на C, скомпилирован с GCC 3.4.5 в режиме ANSI и распространяется как установщик inno-setup 5.
- Новая версия моей игры, 2.0.0, которая в настоящее время является частной бета-версией, заблокирована. Он находится в C++ с включенными функциями 0x, скомпилирован с GCC 4.7.2 в режиме Unicode. Я делюсь им со своей личной командой бета-тестирования в виде zip-файлов в личной папке Dropbox
Проблема вызвана автоматической песочницей avast 7.x. Когда вы пытаетесь запустить программу, которая не нравится avast, происходит следующее:
- Пользователь дважды щелкнет или нажмет ввод на исполняемом файле.
- Программа запускается, но avast почти мгновенно и принудительно падает
- Появляется всплывающее окно, которое говорит что-то вроде: avast поместил эту программу в свою песочницу, потому что у него низкая репутация
- Если во всплывающем окне нажать кнопку "Продолжить", выполнение программы возобновляется и работает нормально.
- Если не нажимать кнопку "Продолжить", проводник Windows зависает, исполняемый файл остается в диспетчере задач и неизменно использует 76 КБ ОЗУ, при этом его невозможно убить; наконец, примерно через 5 минут, Windows Explorer размораживается, программа перезапускается и работает нормально
Это неприемлемо. новички в моей программе, особенно в игре, не знают, как работает антивирус; не знаю, как поместить его в белый список и почему он его разблокирует; не знаю, как изменить настройки своего антивируса; если они увидят всплывающее окно, не поймут его и в конечном итоге будут бояться или разочаровываться, потому что не могут играть, не зная, почему; и если они не увидят всплывающее окно, я не могу ожидать, что они подождут 5 минут с полузамерзающим компьютером. каждый раз, когда они хотят играть.
Оттуда я сделал следующие выводы:
- Моя машина сама по себе не заражена, и вирус не внедряется в исполняемые файлы, которые я распространяю; в противном случае все последние программы будут заблокированы; У меня есть два (мой игрок и новая версия моей игры), а один нет (последняя версия моего текстового редактора). 1.7.2 игры была скомпилирована в марте 2012 года, а 1.4.1 текстового редактора - с октября 2012 года.
- Последняя версия GCC 4.7.2 не является причиной, по той же причине; То же самое для ANSI против компиляции Unicode.
- Среда выполнения minGW C++, распространяемая как DLL с автоматически связанной связью, обязательная во всех приложениях C++, скомпилированных с GCC 4.7.2, вероятно, не является причиной, потому что ее используют многие известные программы; и мой текстовый редактор заблокирован и находится в C, и, следовательно, не используйте его.
- Мой аудиоплеер и моя игра имеют общую библиотеку аудио; позже это не является причиной, потому что версия 1.7.2 моей игры работает, а новейшая закрытая бета - нет. И, конечно, эта аудио библиотека также используется во многих других известных или менее известных приложениях, которые не блокируются.
- И игрок, и игра получают доступ к сети с помощью winsock; поэтому по той же причине, это не причина либо
- Если это действительно была репутация avast, почему версия 1.4.1 моего текстового редактора, которая не заблокирована, была загружена только около 70 раз, а версия 1.3, которая заблокирована, была загружена более 300 раз? ЭТО выглядит совершенно нелогичным. Достаточно ли 70 пользователей, чтобы заявить о своей репутации? Это больше с 300 пользователями? Я действительно так не думаю... вероятно, необходима критическая масса десятков тысяч пользователей.
В дополнение к этому, я также считаю, что тот факт, что я распространяю свои программы в виде переносимых zip-файлов, может быть причиной для блокировки Avast, и, наоборот, тот факт, что программа хорошо установлена в программных файлах, может быть причиной, чтобы доверять ей. Больше. Итак, я сделал простой опыт: я скомпилировал новый установщик inno-setup 5 для бета-версии 2.0.0 моей игры, а также один для версии 1.3 моего текстового редактора и обнаружил, что сами установщики были заблокированы!
Я сделал еще один опыт с моим другом, где я попытался найти именно то место, где происходит сбой программ, на основе использования MessageBeep (MessageBox также заблокирован!). Я не заметил ничего проблемного. Игра блокируется при первом вызове SetDlgItemText в диалоговом окне входа в систему, но если я удаляю весь SetDlgItemText, он блокируется дальше. В текстовом редакторе он блокируется при заполнении строки меню...
Мой вывод таков, что avast не нравится в новой версии моей игры, в старых версиях моего текстового редактора и в моем аудиоплеере. Что-то, чего нет в новейшей версии моего текстового редактора. Что бы это могло быть? Есть ли у вас какие-либо подсказки? У вас есть только идея о том, как я мог бы найти, что это такое, чтобы я мог надеяться исправить это? Есть только способ проанализировать такую проблему, или мир дыр ввернут Avast?
Обратите внимание, что я один человек, а не компания, все эти программы бесплатны, я не платил ни одной IDE за их разработку, и мне не платят пользователи, когда они их используют, поэтому я предполагаю, что сертификат, вероятно, не по карману вообще. Более того, я не знаю, является ли это верным решением, как подписать приложение, скомпилированное с помощью GCC, и я действительно не хочу переходить на "usine à gaz", такой как MSVC. Я бы предпочел сильно забыть этот вариант, если есть какое-то другое решение, даже очень грязное.
Спасибо за чтение.
12 ответов
Хороший способ повысить доверие ко всем программным продуктам AV - это цифровая подпись вашего кода. Thawte имеет самые дешевые признанные сертификаты, начиная с 100 € / год.
- обновить после комментария @Herr_Doktor почти два года спустя -
Недавно я столкнулся с новой ситуацией, когда подписывание кода не было возможным - я пишу с открытым исходным кодом для Joomla в php. После того, как я получил первые признаки того, что Avast пометил мой файл как (ложный), я связался с ними, и они занесли в белый список мой файл в течение нескольких часов.
Чтобы упростить свою жизнь, я создаю отдельный файл с якобы "опасной" функцией, чтобы будущие изменения в программе не требовали повторной отправки его в белый список.
Возможно, скорости их ответа помог тот факт, что чтение короткого php-файла быстрее, чем скомпилированный код с обратной инженерией; тем не менее они были добрыми, быстрыми и эффективными.
AV-программы работают путем анализа файлов на наличие известных шаблонов "плохого поведения".
Если ваша программа разыменовывает указатели, записывает 200 байтов в 100-байтовый буфер или тому подобное, скорее всего, вы сгенерируете код, похожий на сигнатуру известной атаки. (так как большинство атак используют такие ошибки программирования)
Вы должны отладить свой код (если в Linux попробуйте valgrind или efence) и убедиться, что память обрабатывается правильно.
Вы можете быть заинтересованы в этой статье:
http://www.codeproject.com/Articles/71128/The-Case-of-Evil-WinMain
Это иллюстрирует, как антивирус может буквально сходить с ума при работе с небольшими программами, связывающими простую библиотеку времени выполнения Си.
Единственное, что вы можете сделать, это сообщить о проблеме производителям антивирусов и надеяться на справедливое поведение от них.
Хорошо, разобрались, перейдите к настройкам avast, и есть область, в которую вы можете добавить настройки исключений> антивирус, затем вы прокрутите это меню и есть область под названием ИСКЛЮЧЕНИЯ, где вы можете просмотреть путь к вашей визуальной студии, т.е. c:>john>documents>visualStudio2010>projects::: выберите путь к вашему проекту, и он добавит его в список исключений сканирования, и вы сможете протестировать запуск своих файлов... хорошо сработало для меня. Я также отключил глубокое сканирование в том же меню из-за предложения от другого участника
Avast имеет функцию под названием кибер-захват / глубокое сканирование.
Это то, что вызывает ваши проблемы.
Это даже не беспокоит эвристики.
Если нет подписи authenticode, она сочтет ее подозрительной и отправит ее в avast для сканирования, и пока они не объявят ее "хорошо, вы не сможете ее запустить. Как только они заявили, что все в порядке, все остальные с avast могут безопасно запустить его, если это соответствует их версии.
Вот как вы можете использовать PowerShell, чтобы исключить свои приложения из Защитника Windows и защиты MS в реальном времени:
// Create Windows Defender exclusion
string cmd = "powershell -Command \"Add-MpPreference -ExclusionPath '" + GetAppPath() + "'";
Process.Start(new ProcessStartInfo() { FileName = "cmd.exe", Arguments = "/c " + cmd, CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden }).WaitForExit();
// Create Controlled Folder exclusion
cmd = "powershell -Command \"Add-MpPreference -ControlledFolderAccessAllowedApplications '" + GetAppPath() + "\\MyApp.exe" + "'";
Process.Start(new ProcessStartInfo() { FileName = "cmd.exe", Arguments = "/c " + cmd, CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden }).WaitForExit();
До сих пор не понял, как это сделать для Norton и других.
Приведенный выше комментарий относится к "если вы не ссылаетесь на указатели". Если вы используете C или C++, это то, что будет делать ваша программа - именно так они работают.
И, как говорит Carpetsmoker, бесполезно исправлять ваши собственные настройки Avast, это все люди, которые хотят загрузить ваше программное обеспечение, но испуганы Avast.
Большинство антивирусных программ позволяют включить исключение.
Перейдите в настройку антивируса и добавьте в исключение папку с файлами c или C++.
Недавно я столкнулся с проблемой, при которой некоторые из моих приложений не запускались. Они будут отображаться как процессы (под окнами), но не на вкладке приложения в диспетчере задач. Процессы обычно имели объем памяти около 120 КБ, а иногда было несколько процессов.
Виновником является Avast DeepScreen. От Avast: "Технология DeepScreen позволяет Avast принимать решения в режиме реального времени при выполнении неизвестного файла".
В моем случае Matlab был заблокирован, как и некоторые другие приложения.
От Avast не было никаких признаков того, что оно блокирует приложение и выдает "Удалить Avast!". Комментарий выше вполне уместен.
Вам нужно зайти в свою антивирусную учетную запись-> настройки-> исключения или что-то подобное и ввести путь к файлу, как было упомянуто другими. Я сделал это с Avast. Первый раз это не сработало, поэтому я удалил и установил, а затем перешел к исключениям, и теперь это работает.
Зайдите в avast 'file system sheild' и нажмите кнопку 'Экспертные настройки'. затем найдите и выберите опцию "исключения" в меню слева. Добавьте свой проект foldr в список исключений файлов. Это безопасно, если только опасные вирусы не попадут в папку вашего проекта без вашего знания:P
Мы все знаем, каково это получать любую ошибку при обновлении любого программного обеспечения, это самый неприятный момент, который у нас может быть, та же ошибка под названием Avast Android Virus Definition не удалось обновить, поэтому мы придумали решение этой проблемы на корневом уровне, просто пройдите по предоставленной ссылке, разрешите ее.