Как сделать так, чтобы ваши программы Python не рассматривались как вредоносные программы
BuratinopolBuratinopol - не забудь подписаться на канал!

Приятного прочтения!
Мы не призываем вас к каким-либо действиям, статья написана исключительно в ознакомительных целях, чтобы уберечь читателя от противоправных действий.
Эта статья будет объяснять:
- Почему код python, скомпилированный с помощью pyinstaller или py2exe, часто помечается как вредоносное ПО вирусов или троянских коней
- Что вы можете с этим поделать
- Предоставляет полный (и постоянно развивающийся) список того, как сообщать об этих ложных срабатываниях поставщикам вирусов
- Как остановить это в будущем
Код Python часто распространяется как исходный код, но иногда возникает необходимость распространять его в более удобном для пользователя формате: например, в скомпилированном exe-файле .
Это очень удобно для ваших пользователей, но может стать настоящей головной болью для разработчиков. Компиляция кода обычно выполняется с помощью библиотеки pyinstaller или py2exe, и это не так просто, как вы можете себе представить.
Но как только вы скомпилировали программу тогда начинаются настоящие неприятности…
Код compiled с помощью pyinstaller или py2exe часто ошибочно считается вредоносным ПО, вирусом или трояном с помощью различных антивирусных программ. Он часто может иметь страшные имена, такие как Trojan:Win32/Wacatac.C!ml.
Это, скорее всего, то, что известно в вирусной индустрии как “ложноположительный результат”. Ваш код может не делать ничего вредоносного, но поскольку он был скомпилирован таким образом, что немного похож на другой код, который может делать вредоносные вещи, антивирус считает его вирусом.
Это раздражает, поскольку имеет серьезные последствия для того, как ваш код может быть распространен. Windows автоматически помещает на карантин определенные файлы, которые считаются вредоносными, а это означает, что ваши пользователи не могут запускать их, не перепрыгивая через дополнительные обручи или вообще не выключая Защитник Windows (плохая идея). И многие сайты распространения требуют чистого счета здоровья на вашем коде, прежде чем они будут распространять его.
Хорошая новость заключается в том, что вы можете исправить это, хотя это требует немного работы.
Шаг 1: Выясните, насколько велика проблема
Бесплатный сайт под названием VirusTotal-это ваш друг здесь. Это позволяет вам загрузить свой файл и посмотреть, какая из многих антивирусных программ считает его вредоносным. Это первый шаг к решению проблемы.

Как вы можете видеть здесь, мой совершенно безобидный код был признан вредоносным ПО 7 из 69 антивирусных программ. (Чтобы быть ясным: это вовсе не злонамеренно; это ложные срабатывания).
Следующий шаг заключается в том, чтобы решать каждый из этих ложных срабатываний по очереди.
Шаг 2: сначала займитесь Защитником Windows
Безусловно (далеко!) самой важной антивирусной программой для решения этой проблемы является Защитник Windows.
Небольшой процент ваших пользователей может использовать антивирус Jiangmin, McAfee или Malwarebytes, но если вы распространяете его для Windows, то буквально 100% ваших пользователей будут использовать Защитник Windows. Он также более активен, чем другие антивирусные программы (и будет, когда он достаточно беспокоится о файле, фактически сделать его невозможным для ваших пользователей, чтобы запустить его, а не просто предупреждение).
Отличная новость заключается в том, что Microsoft потрясающе справляется с ложными срабатываниями для отчетов о вредоносных программах.
У них есть веб-сайт, который позволяет вам сообщать о ложных срабатываниях: https://www.microsoft.com/en-us/wdsi/filesubmission
Вы можете отправить свой файл (вам нужна учетная запись Microsoft) вместе с короткой запиской, объясняющей, почему вы считаете, что это ложноположительный результат. Обычно я говорю что-то вроде:
Доброе утро,
Мой файл (прилагается) был неправильно идентифицирован Защитником Windows как вредоносное ПО. Идентифицированное обнаружение-Trojan:Win32/Wacatac.C!ml.
Обычно файлы, скомпилированные из python с помощью pyinstaller, неправильно идентифицируются как вредоносные программы таким образом.
Это безобидное программное обеспечение, которое не содержит вредоносных программ. Исходный код доступен по адресу: https://github.com/hankhank10/findmyplane-client
Я был бы признателен, если бы вы рассмотрели и удалили это обнаружение.
В первый раз, когда я подал такую просьбу, я полностью ожидал, что она исчезнет в черной дыре и я никогда не услышу ответа. Но это далеко не так. Microsoft находится на нем, когда дело доходит до этого.
Как только вы отправляете заявку, вы получаете идентификатор трекера по электронной почте, который вы можете использовать для отслеживания вашего дела в режиме реального времени, когда они его анализируют. У них есть реальный человек, который просматривает вашу программу и возвращается к вам, по моему опыту, в течение нескольких часов. Даже в выходные. Предполагая, что они сочли его чистым, он будет занесен в белый список, и обнаружение будет немедленно удалено (хотя это может занять 24 часа для того, чтобы белый список распространился на всех пользователей, когда они обновят свой Защитник Windows).
Шаг 3: Займитесь всеми остальными
Большинство антивирусных компаний имеют схожие способы подачи ложных срабатываний, хотя они различаются по методу и тому, как быстро они реагируют.
Такие компании, как Microsoft, Avast, Sophos и Bitdefender, получают золотую звезду за наличие простых онлайн-форм, которые позволяют легко отправлять ложные срабатывания и быстро (часами) реагировать.
Такие компании, как Malwarebytes, делают это немного сложнее: они требуют, чтобы вы создали учетную запись форума, чтобы отправить ложное вредоносное ПО, но, по крайней мере, они очень отзывчивы (опять же в течение нескольких часов).
Некоторые компании делают это немного сложнее для вас. Ikarus принимает заявки только по электронной почте (что может быть трудно, так как Gmail выходит из себя, если вы пытаетесь отправить файл .exe по электронной почте). Некоторые (Сангфор, я смотрю на вас) требуют, чтобы вы зарегистрировались в довольно сложной системе учетных записей, большинство из которых написано на мандаринском китайском языке, прежде чем принять вашу заявку. Но все они по — прежнему довольно отзывчивы при фактическом просмотре вашего файла и возвращении к вам-редко бывает, что на просмотр и белый список уходит более 24 часов.
Самое худшее на целую деревенскую милю в моем опыте-это Макафи. У них есть куча разных, но одинаково названных антивирусных продуктов, и невероятно неясно, куда на самом деле отправить ложноположительный отчет. VirusTotal говорит, что McAfee считает мой код Artemis!35935B12295F, но McAfee-GW-Edition считает, что мой код BehavesLike.Win64.CoinMiner.vc-да. Но зайдите на сайт McAfee, и вам не ясно, какой продукт какой, потому что они говорят только о доме, бизнесе и предприятии, и подождите, это McAfee или Avert Labs, с которыми я имею дело здесь, потому что они кажутся одинаковыми... но слегка разными? ВТФ?
McAfee также невероятно медленно реагирует. Даже для того, чтобы получить автоматический ответ о том, что они получили ваш код, требуется 3-4 дня.
Шаг 4: Продолжайте тушить пожар
Плохая новость заключается в том, что даже если вы полностью очистите свой код, сообщив о ложных срабатываниях и включив их в белый список, это еще не конец битвы.
Вам нужно обновить свой код и создать новый исполняемый файл? В общем, вы вернулись на круги своя. Белый список относится только к конкретному исполняемому файлу, который вы отправили. Даже если вы измените одну строку кода, это изменит хэш файла и будет означать, что антивирусные программы снова выдадут ложные срабатывания для вашего кода python.
Есть хороший шанс, что вы потратите больше времени, пытаясь удалить эти ложные срабатывания для каждого выпуска, чем на самом деле кодируя его.
Хорошая новость заключается в том, что вы будете очень сосредоточены на том, чтобы ваш код работал идеально, прежде чем выпустить его.
Шаг 5: рассмотрим сигнатуру кода
Подписание вашего кода стоит денег (минимум около €60 в год) и приходит с некоторой болью (это занимает несколько дней, чтобы получить, вам нужно представить различные документы, такие как водительские права — плюс селфи вы держите его — и счета, показывающие ваш адрес, чтобы доказать, что вы реальный человек).
Это также не является мгновенным решением: антивирусные провайдеры не будут мгновенно белый список вашего кода только потому, что он подписан.
Но подписание вашего кода действительно позволяет вам построить репутацию с течением времени. Неподписанный код по существу начинается с нуля каждый раз, но если вы подписываете свой код, то по мере того, как он загружается снова и снова и попадает в белый список снова и снова, вы должны начать строить “репутацию” с антивирусными поставщиками, что означает, что ваши программы pyinstaller или py2exe помечаются как вредоносные программы все меньше и меньше.
К кому обратиться, чтобы сообщить о вашем коде как о ложных срабатываниях
Общее количество вирусов отслеживает ~70 поставщиков антивирусных и вредоносных программ.
Отслеживать, как отправить свой код каждому из них после ложного срабатывания, непросто.
Я веду здесь полный список (https://github.com/hankhank10/false-positive-malware-reporting) о том, где и как сообщить о своем коде как о ложноположительном.

● SOFTWARE — хранилище приватных софтов и прочей годноты. Подпишись!
● CODING — программирование доступным языком.
● Termux - one — гайды и статьи по Termux.