Как предотвратить, чтобы мой исполняемый файл лечился от AV как от плохого или вирусного?


14

Я создаю часть программного обеспечения, которая будет работать на Windows и будет действовать как лаунчер для игры, чтобы выполнять функцию автоматического обновления и проверки файлов на клиентском ПК.

Одна вещь, которую я не понимаю, почему мое антивирусное программное обеспечение (Avast) считает мой exe-файл опасным и не запустит его, не попросив поместить его в песочницу для безопасного использования.

Существуют ли какие-либо правила, которым должно следовать мое программное обеспечение, чтобы с ними обращались как с хорошими, или я должен платить сотни долларов за какую-то цифровую подпись и другие вещи?

Я использую C # с MS Visual Studio 2010.

VirusTotal отчет . Нет инъекций DLL, работает как удаленный загрузчик файлов, используя класс WebClient ().

Это не так, как если бы он предупреждал о вирусе, но он "предлагает", чтобы песочница его. Посмотрите на скриншот:введите описание изображения здесь


1
Я предлагаю вам сначала загрузить свою программу на virustotal.com, чтобы получить представление о количестве поставщиков, которые считают ваше приложение подозрительным. Если все AV-программы помечают ваше приложение, вам необходимо выяснить, что делает ваш код, что AV-программа может счесть подозрительной. Практически невозможно определить, какие поставщики AV используют эвристику - я сомневаюсь, что они вам скажут. Если это только один или два, вы можете сообщить им о ложных срабатываниях (проверьте их веб-сайт или в Google "vendorname report false false"). Недостатком этого является то, что вам придется делать это с каждым выпуском вашего программного обеспечения.
Ян Догген

Он ничего не делает, связанный с DLL-инъекцией, не так ли?
l46kok

Убедитесь, что ваш компьютер не заражен вирусом. Я никогда не видел такого поведения раньше, если нет инфекции.
Сэм

4
Вы можете начать удалять функциональность из своего кода, пока AV не будет удовлетворен или код не останется (в зависимости от того, что произойдет раньше) Часть, удаление которой сделало AV счастливым, должна быть проверена.
Угорен

1
Проблема возникает только во время разработки? Я часто сталкивался с этой проблемой на работе, когда компилятор генерировал исполняемые файлы. Если это так, решение действительно заключается в удалении антипрограммного обеспечения.

Ответы:


22

«Распространенность файлов / репутация низкая» означает, что Avast использует систему репутации, основанную на использовании программы. Только если ваша программа была установлена ​​и «помечена как доброжелательная» достаточным количеством пользователей, она получит хорошую репутацию и это предложение исчезнет. Avast называет это облачной функцией FileRep и говорит: «Все новые неизвестные файлы потенциально опасны. Когда бы они ни стали широко распространенными, у них больше не будет причин для их автоматической загрузки». Это PITA для небольших компаний-разработчиков программного обеспечения (и Avast не единственный, кто делает это, обратите внимание, например, на Symantec Suspicious Insight " ). Одна вещь, которую предлагает Avast, заключается в том, что" вы можете ускорить процесс, если будете подписывать файлы цифровой подписью ".

Локально (на вашем компьютере) вы можете перейти в настройки эксперта autosandbox и отключить автоматическую загрузку файлов с низкой репутацией, или, возможно, использовать самозаверяющий сертификат, но это не поможет вам с вашими конечными пользователями. Для тех, кто я предлагаю вам использовать настоящий сертификат (стоит денег, но Windows тоже нравится), и обновите свою документацию этой информацией.
Может быть, есть еще предложения на форумах Avast .


У меня похожая проблема. какое решение для цифровой подписи вы использовали @Deele? У меня нет более 50 $ для этого ...
Basj

0

В дополнение к тому, что сказал Ян Догген, другие антивирусные программы также выполняют эвристическое сканирование.

Антивирусное сканирование не просто проверяет, является ли конкретный исполняемый файл точной копией известного вируса. Это можно и легко обойти. Теперь AV-инструменты проверяют определенное поведение, например, использует ли он сетевые библиотеки, выполняет ли он доступ к файлам / изменяет их, выполняет ли он шифрование / дешифрование во время выполнения и т. Д. И в зависимости от внутреннего алгоритма (эвристического), он выплевывает опасность ,

Один из способов борьбы с ложными обнаружениями различных AV - это то, что известно путем запутывания подписи. По сути, еще один метод заключается в том, что AV-инструмент будет искать, есть ли определенный поток байтов (сигнатура), включенный в исполняемый файл. Если он находит это, он знает, что это вирус. Вы можете закончить тем, что производите (исполняемый) код, который может включать одну из многих миллиардов подписей, которые использует программное обеспечение AV. Чтобы удалить эту конкретную часть, вам нужно выполнить бинарный поиск в вашем исполняемом файле, разделив его на две части: первую половину, вторую половину и снова отсканировав их и повторяя процесс, пока вы не найдете часть, содержащую подпись. Найдя его, вы переворачиваете некоторые биты и смотрите, все ли еще обнаружено. Более безопасный способ - просто изменить исходный код и посмотреть, выплевывает ли он другой поток байтов в этом месте.

Вы столкнетесь с этой проблемой на 100% с типом программного обеспечения, которое вы разрабатываете.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.