Mes programmes sont bloqués par l’antivirus avast

Je suis un programmeur amateur et je suis désespéré et fou à cause d’un gros problème: la plupart de mes programmes sont bloqués par l’antivirus avast, alors que d’autres ne le sont pas et je ne comprends pas pourquoi. Plus j’essaie d’enquêter, moins je comprends le problème.

Je demande votre aide pour trouver une solution afin que mes programmes ne soient plus bloqués ou, par défaut, au moins quelques indices solides expliquant pourquoi cela pourrait être le cas. Il existe déjà de nombreux sujets à ce sujet sur le Web. Cependant, la plupart d’entre eux ne donnent que des réponses superficielles: ils expliquent simplement comment l’antivirus fonctionne avec les signatures et l’heuristique de détection, ou indiquent qu’il suffit d’append l’application incriminée dans la liste blanche sans poser d’autres questions. Bien que ce soit certainement correct, ce n’est pas une réponse acceptable à mon sens, car je suis toujours confronté à mes propres programmes qui refusent de travailler sans aucune idée concrète pour commencer une enquête.

Tout d’abord, le seul anti-virus qui bloque mes programmes est avast 7.x. Aucun autre antivirus ne voit d’inconvénient à exécuter mon logiciel. Deuxièmement, je ne me suis pas avoué; il est installé sur la machine d’un ami. J’ai Windows 7, il a Windows XP. Je suis tout à fait sûr que le problème est seulement avast: quand il est temporairement désactivé, ou si le programme est ajouté à sa liste blanche, tout fonctionne comme prévu.

Trois programmes différents sont en difficulté:

  • Un éditeur de texte, dans le but de remplacer le bloc-notes Windows tout en restant simple, efficace et personnalisable
  • Un petit lecteur audio amateur très simple à utiliser
  • Le programme client d’une plateforme de jeu en ligne, qui compte actuellement plus de 1000 utilisateurs

Le premier est open source, je peux donner un lien vers l’exécutable et le code source si nécessaire. Les deux autres sont des sources fermées mais libres d’utilisation, je peux donner un lien vers l’exécutable de la version actuelle uniquement. les seules choses communes évidentes entre ces trois programmes sont moi en tant que développeur, ma machine Windows 7 qui les a compilé, la famille de compilateurs MinGW / GCC et toutes les applications GUI Win32 sans aucun framework (pas de MFC, pas de WPF, pas de QT, WXWidgets ou autres, juste des applications graphiques Win32 / C pures)

Voici mes observations et si loin:

  • Les versions 1.1, 1.2.1 et 1.3 de mon éditeur de texte sont bloquées. Ils sont en C et non en C ++, ont été compilés avec GCC 3.4.5 en mode unicode et sont dissortingbués dans des fichiers zip portables (par portable, je veux simplement dire qu’il n’ya pas d’installateur et aucune installation nécessaire)
  • La version 1.4.1 du même éditeur de texte n’est pas bloquée. Il a été compilé avec GCC 4.7.2, toujours en C et non en C ++, toujours en mode Unicode, et toujours en tant que fichier zip portable
  • Toutes les versions de mon lecteur audio sont bloquées; ils sont en C ++ avec les fonctionnalités 0x activées, ont été compilés par GCC 4.7.2 en mode ANSI, dissortingbués dans un fichier zip portable
  • La version actuelle de mon jeu, 1.7.2, n’est pas bloquée. il est en C, a été compilé avec GCC 3.4.5 en mode ANSI et est dissortingbué en tant qu’installateur inno-setup 5.
  • La nouvelle version de mon jeu, 2.0.0, qui est actuellement une version bêta privée, est bloquée. Il est en C ++ avec les fonctionnalités 0x activées, a été compilé avec GCC 4.7.2 en mode unicode. Je le partage avec mon équipe de bêta-test privé en tant que fichiers zip dans un dossier de repository privé

Le problème est dû à l’auto-sandbox d’avast 7.x. Ce qui suit se produit quand on essaie de démarrer un programme détesté par avast:

  1. L’utilisateur double-cliquez ou appuyez sur Entrée sur l’exécutable
  2. Le programme commence mais est presque instantanément et forcé par avast
  3. Un pop-up apparaît et dit quelque chose comme: avast a mis ce programme dans son bac à sable parce que sa réputation est faible
  4. Si l’on clique sur le bouton Continuer de la fenêtre contextuelle, l’exécution du programme est redémarrée et fonctionne normalement
  5. Si l’on ne clique pas sur le bouton Continuer, l’explorateur Windows se fige, l’exécutable rest dans le gestionnaire de tâches et utilise invariablement 76 Ko de RAM tout en étant impossible à tuer; enfin après environ 5 minutes, Windows Explorer se débloque, le programme est redémarré et fonctionne normalement

C’est inacceptable. les utilisateurs débutants de mon programme, en particulier le jeu, ne savent pas comment fonctionnent les antivirus; ne sais pas comment le mettre dans la liste blanche et pourquoi il le débloquera; ne sais pas comment modifier les parameters de leur anti-virus; s’ils voient le pop-up, ne le comprendront pas et finiront par avoir peur ou être déçus parce qu’ils ne peuvent pas jouer sans savoir pourquoi; et s’ils ne voient pas la fenêtre contextuelle, je ne peux pas m’attendre à ce qu’ils attendent 5 minutes avec un ordinateur à moitié congelé. chaque fois qu’ils veulent jouer.

De là, j’ai fait les déductions suivantes:

  • Ma machine n’est pas elle-même infectée et aucun virus n’est injecté dans les exécutables que je dissortingbue; sinon, tous les programmes récents seraient bloqués; J’ai deux qui sont (mon lecteur et la nouvelle version de mon jeu), tandis que l’autre ne l’est pas (la dernière version de mon éditeur de texte). Le 1.7.2 du jeu a été compilé en mars 2012, tandis que le 1.4.1 de l’éditeur de texte date d’octobre 2012.
  • La dernière version de GCC 4.7.2 n’est pas en cause, par le même raisonnement; de même pour la compilation ANSI vs unicode.
  • Le runtime minGW C ++, dissortingbué en tant que DLL auto-liée, obligatoire dans toutes les applications C ++ compilées avec GCC 4.7.2, n’en est probablement pas la cause, car de nombreux programmes bien connus l’utilisent; et mon éditeur de texte est bloqué et est en C, et donc ne l’utilise pas.
  • Mon lecteur audio et mon jeu ont la bibliothèque audio commune; ce n’est pas la cause plus tard, parce que la version 1.7.2 de mon jeu fonctionne et la dernière version bêta privée pas. Et bien sûr, cette bibliothèque audio est également utilisée dans de nombreuses autres applications connues ou moins connues qui ne sont pas bloquées.
  • Le joueur et le jeu accèdent au réseau en utilisant winsock; donc par le même raisonnement, ce n’est pas la cause non plus
  • Si avast était vraiment la réputation, pourquoi la version 1.4.1 de mon éditeur de texte, qui n’est pas bloqué, n’a été téléchargée que 70 fois, alors que la version 1.3 bloquée a été téléchargée plus de 300 fois? Il semble complètement illogique. 70 utilisateurs suffisent-ils pour réclamer quelque chose au sujet de la réputation? Est-ce plus avec 300 utilisateurs? Je ne pense pas vraiment que … une masse critique de dizaines de milliers d’utilisateurs est nécessaire.

En plus de cela, je pense aussi que le fait de dissortingbuer mes programmes en tant que fichiers zip portables peut être une raison de bloquer Avast, et inversement, le fait qu’un programme soit bien installé dans les fichiers de programme peut être une raison de lui faire confiance. plus. J’ai donc fait une expérience simple: j’ai compilé un nouveau programme d’installation inno-setup 5 pour la version bêta 2.0.0 de mon jeu, ainsi qu’une version 1.3 de mon éditeur de texte, et j’ai découvert que les programmes d’installation eux-mêmes étaient bloqués!

J’ai fait une autre expérience avec mon ami, où j’ai essayé de trouver exactement l’endroit où les programmes se bloquent, basé sur l’utilisation de MessageBeep (MessageBox est également bloqué!). Je n’ai rien remarqué de problématique. Le jeu est bloqué lorsque SetDlgItemText est appelé pour la première fois dans la boîte de dialog de connexion, mais si je supprime tout SetDlgItemText, il est bloqué plus bas. Dans l’éditeur de texte, il est bloqué lors du remplissage de la barre de menus …

Ma conclusion est que avast n’aime pas quelque chose dans la nouvelle version de mon jeu, dans les anciennes versions de mon éditeur de texte et dans mon lecteur audio. Quelque chose qui est absent dans la dernière version de mon éditeur de texte. Qu’est ce que ça pourrait être ? Avez-vous des indices? Avez-vous seulement une idée sur la façon dont je pourrais procéder pour trouver ce que c’est pour pouvoir espérer y remédier? N’y a-t-il qu’un moyen d’parsingr un tel problème, ou le monde du trou est-il vissé par avast?

Notez que je suis une seule personne et non une entreprise, tous ces programmes sont libres d’utilisation, je n’ai pas payé d’IDE pour les développer et je ne suis pas payé par les utilisateurs quand ils les utilisent. certificate n’est probablement pas abordable du tout. De plus, je ne sais pas si c’est une vraie solution, comment signer une application compilée avec GCC, et je ne veux vraiment pas passer à une usine à gaz comme MSVC. Je préférerais fortement oublier cette option s’il existe une autre solution, même très sale.

Merci pour la lecture.

Un bon moyen d’incrémenter la confiance de tous les logiciels audiovisuels est de signer numériquement votre code. Thawte a les certificates les moins chers et les moins chers à moins de 100 € / an.

– mise à jour après le commentaire de @ Herr_Doktor près de deux ans plus tard –

J’ai récemment rencontré une nouvelle situation lorsque la signature de code n’était pas une option – j’écris open source pour Joomla en php. Après avoir reçu les premières indications selon lesquelles Avast a marqué mon fichier comme étant (faux) positif, je les ai contactés et ils ont ajouté mon fichier à la liste blanche en quelques heures.

Afin de me simplifier la vie, je crée un fichier séparé avec la fonction soi-disant “dangereuse”, de sorte que les modifications futures du programme ne nécessiteront pas de le soumettre à nouveau pour la liste blanche.

Peut-être la rapidité de leur réponse a-t-elle été facilitée par le fait que la lecture d’un fichier php court est plus rapide que le code compilé en reverse engineering; néanmoins, ils étaient gentils, rapides et efficaces.

Les programmes audiovisuels fonctionnent en analysant les fichiers à la recherche de modèles de “mauvais comportement” connus.

Si votre programme est en train de déréférencer des pointeurs, écrivant 200 octets dans un tampon de 100 octets ou similaire, il est probable que vous générez du code similaire à une signature d’une attaque connue. (puisque la plupart des attaques exploitent ce genre d’erreurs de programmation)

Vous devez déboguer votre code (si sous Linux essayez valgrind ou efence) et assurez-vous que la mémoire est gérée correctement.

Vous pouvez être intéressé par cet article:

http://www.codeproject.com/Articles/71128/The-Case-of-Evil-WinMain

Il montre comment les antivirus peuvent littéralement devenir fous lorsqu’ils traitent de petits programmes reliant une simple bibliothèque d’exécution C.

La seule chose que vous puissiez faire est de signaler le problème aux fabricants d’antivirus et d’en espérer un comportement équitable.

Bien sûr, allez à vos parameters avast et il y a un domaine où vous pouvez append des parameters d’exception> antivirus, puis vous faites défiler ce menu et il y a une zone intitulée EXCLUSIONS où vous pouvez parcourir votre chemin de studio visuel, c.-à-d. c:> john> documents> visualStudio2010> projets ::: sélectionnez votre chemin de projet et l’appenda à une liste d’exceptions de numérisation et vous devriez pouvoir tester vos fichiers … cela a bien fonctionné pour moi. J’ai également désactivé l’parsing approfondie dans le même menu en raison d’une suggestion d’un autre membre

J’ai récemment rencontré un problème où certaines de mes applications ne fonctionneraient pas. Ils apparaissent sous forme de processus (sous Windows), mais jamais sous l’onglet Application dans le Gestionnaire des tâches. Les processus avaient généralement une taille de mémoire d’environ 120 Ko et il y avait parfois plusieurs processus.

Le coupable est Avast DeepScreen. Avast: “La technologie DeepScreen permet à Avast de prendre des décisions en temps réel lorsqu’un fichier inconnu est exécuté”.

Dans mon cas, Matlab a été bloqué, de même que d’autres applications.

Avast n’a pas indiqué qu’elle bloquait une application, ce qui rendait “Remove Avast!” commentaire ci-dessus tout à fait approprié.

Un commentaire ci-dessus fait référence à «si vous référencez des pointeurs». Si vous utilisez C ou C ++, c’est ce que votre programme fera – c’est comme ça qu’il fonctionne.

Et car carpetsmoker dit que cela ne sert à rien de réparer vos propres parameters Avast, ce sont tous les gens qui veulent télécharger votre logiciel mais qui sont effrayés par Avast.

Avast a une fonctionnalité appelée cybercapture / parsing en profondeur.

C’est ce qui cause vos problèmes.

Il ne se soucie même pas des heuristiques.

S’il n’y a pas de signature Authenticode, il le considérera comme suspect et l’enverra à avast pour qu’ils le scannent, et jusqu’à ce qu’ils déclarent que c’est correct, vous ne pourrez pas l’exécuter. Une fois qu’ils l’ont déclaré correct, tous les autres utilisateurs avast peuvent l’exécuter en toute sécurité s’ils correspondent à leur version.

aller à avast “système de fichiers sheild” et cliquez sur le bouton “parameters experts”. puis trouvez et cliquez sur l’option «exclusions» dans le menu à gauche. Ajoutez votre projet foldr dans la liste d’exclusion de fichiers. Ceci est sûr sauf si des virus dangereux sont explorés dans votre dossier de projet sans votre connaissance: P

Vous devez accéder à votre compte antivirus-> parameters-> exclusions ou à quelque chose de similaire et taper le chemin d’access au fichier mentionné par les autres. Je l’ai fait avec avast. La première fois, cela n’a pas fonctionné, j’ai donc désinstallé et installé, puis je suis passé aux exclusions et ça marche maintenant.