Я программист-любитель, и я получаю отчаяние и безумство из-за большой проблемы: большинство моих программ блокируются антивирусом avast, а некоторые нет, и я не понимаю, почему. Чем больше я пытаюсь исследовать, тем меньше я понимаю, в чем проблема.
Я прошу вашу помощь найти решение, чтобы мои программы больше не блокировались или, по умолчанию, по крайней мере некоторые сильные подсказки, которые могли бы объяснить, почему это может быть так. В Интернете уже много тем. Однако большинство из них дают только поверхностные ответы: они просто объясняют, как антивирус работает с сигнатурами и эвристикой обнаружения, или заявляют, что вам просто нужно добавить оскорбительное приложение в белый список, не задавая никаких других вопросов. Хотя это, безусловно, правильно, это не приемлемые ответы в моем понимании, потому что я по-прежнему остаюсь с собственными программами, которые отказываются работать без какой-либо конкретной идеи, чтобы начать расследование.
Прежде всего, единственным антивирусом, который блокирует мои программы, является avast 7.x. Никакой другой антивирус не видит неудобства для запуска моего программного обеспечения. Во-вторых, у меня нет самого аваста; он устанавливается на другом компьютере. У меня есть окна 7, у него есть Windows XP. Я полностью уверен, что проблема только в avast: когда она временно отключена или если программа добавлена в ее белый список, все работает хорошо, как ожидалось.
В программе есть три проблемы:
- Текстовый редактор с целью заменить блокнот Windows, сохраняя простой, эффективный и настраиваемый
- Маленький любительский аудиоплеер очень прост в использовании.
- Клиентская платформа онлайн-игровой платформы, в настоящее время насчитывающая более 1000 пользователей
Первый из них с открытым исходным кодом, я могу при необходимости указать ссылку на исполняемый файл и исходный код. Два других являются закрытыми исходными кодами, но доступны для использования, я могу дать ссылку на исполняемый файл только текущей версии. единственные очевидные общие вещи между этими тремя программами - это я как разработчик, мой компьютер с Windows 7, который их скомпилировал, семейство компиляторов, которое является MinGW/GCC, и все они являются графическими приложениями win32 без каких-либо фреймворков (без MFC, без WPF, нет QT, WXWidgets или что-то еще, просто чистые приложения Win32/C GUI)
Вот мои наблюдения и хотя до сих пор:
- Блокируются версии 1.1, 1.2.1 и 1.3 моего текстового редактора. Они находятся в C не С++, были скомпилированы с GCC 3.4.5 в режиме unicode и распространяются в переносных zip файлах (переносимыми, я просто не имею в виду ни один установщик и не требуется установка).
- Версия 1.4.1 того же текстового редактора не блокируется. Он был скомпилирован с GCC 4.7.2, все еще в C, а не С++, все еще в режиме Unicode и все еще как переносимый zip файл.
- Все версии моего аудиоплеера заблокированы; они находятся на С++ с включенными функциями 0x, были скомпилированы GCC 4.7.2 в режиме ANSI, распространены в переносном zip файле.
- Текущая версия моей игры 1.7.2 не заблокирована. он находится в C, был скомпилирован с GCC 3.4.5 в режиме ANSI и распространяется как инсталлятор инсталляции 5.
- Новая версия моей игры 2.0.0, которая в настоящее время является частной бета-версией, заблокирована. Он находится на С++ с включенными функциями 0x, скомпилирован с GCC 4.7.2 в режиме Unicode. Я поделился им с моей частной группой по тестированию бета-тестирования как zip файлы в частной папке Dropbox
Проблема вызвана avast 7.x auto-sandbox. Следующее происходит, когда вы пытаетесь запустить программу, не понравившуюся avast:
- Пользователь дважды щелкнул или нажал кнопку ввода в исполняемом файле
- Программа запускается, но почти мгновенно и принудительно разбивается avast
- Появляется всплывающее окно и говорит что-то вроде: avast помещает эту программу в свою песочницу, потому что его репутация низкая
- Если один щелчок по кнопке продолжения всплывающего окна, выполнение программы перезапускается и нормально работает
- Если вы не нажмете кнопку "Продолжить", Windows Explorer замерзает, исполняемый файл остается в диспетчере задач и неизменно использует 76 КБ ОЗУ, будучи невозможным убить; наконец, примерно через 5 минут, окно explorer размораживается, программа перезапускается и работает нормально
Это неприемлемо. новички пользователей моей программы, особенно игры, не знают, как работает антивирус; не знаю, как поместить его в белый список и почему он разблокирует его; не знаю, как изменить настройки своего антивируса; если они видят всплывающее окно, не поймут его и в конечном итоге будут бояться или разочароваться, потому что они не могут играть, не зная почему; и если они не видят всплывающее окно, я не могу ожидать, что они ожидают 5 минут с помощью компьютера с половиной замораживания. каждый раз, когда они хотят играть.
Оттуда я сделал следующие выводы:
- Моя машина сама не заражена и ни один вирус не загружается в исполняемые файлы, которые я распространяю; в противном случае все последние программы будут заблокированы; У меня есть два, которые (мой плеер и новая версия моей игры), а один нет (последняя версия моего текстового редактора). 1.7.2 игры составлен в марте 2012 года, а 1.4.1 текстового редактора - с октября 2012 года.
- Самая новая версия GCC 4.7.2 не является причиной, по тем же соображениям; то же самое для компиляции ANSI vs unicode.
- Среда выполнения minGW С++, распространяемая как связанная с авто связью DLL, обязательная во всех приложениях на С++, скомпилированных с 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 a gaz", как MSVC. Я бы предпочел бы сильно забыть этот вариант, если есть другое решение, даже очень грязное.
Спасибо, что прочитали.