web-dev-qa-db-fra.com

Mes programmes sont bloqués par avast anti-virus

Je suis un programmeur amateur et je deviens désespéré et énervé à cause d’un problème important: la plupart de mes programmes sont bloqués par un 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 sollicite votre aide pour trouver une solution afin que mes programmes ne soient plus bloqués ou, par défaut, au moins quelques indices puissants qui pourraient expliquer pourquoi cela pourrait être le cas . Il existe déjà de nombreux sujets à ce sujet. sur le Web. Cependant, la plupart d'entre eux n'apportent que des réponses superficielles: ils expliquent simplement le fonctionnement de l'antivirus avec les signatures et les heuristiques de détection, ou indiquent que vous devez simplement ajouter l'application incriminée à la liste blanche sans poser d'autre question. Bien que cela soit certainement correct, ce ne sont pas des réponses acceptables dans mon sens, car je reste avec mes propres programmes qui refusent de fonctionner sans aucune idée concrète de commencer une enquête.

Tout d’abord, le seul antivirus qui bloque mes programmes est avast 7.x. Aucun autre anti-virus ne voit d'inconvénient à exécuter mon logiciel. Deuxièmement, je ne me suis pas avasté; 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 ne concerne qu'avast: lorsqu'il est désactivé temporairement ou que le programme est ajouté à la liste blanche, tout fonctionne correctement.

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, comptant 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 uniquement donner un lien vers l’exécutable de la version actuelle . Les seuls points communs évidents entre ces trois programmes sont moi en tant que développeur, ma machine Windows 7 qui les a compilés. , la famille de compilateurs qui est MinGW/GCC, et ils sont tous des applications d’interface graphique win32 sans aucun framework (pas de MFC, pas de WPF, pas de QT, de WXWidgets ou autre; simplement des applications d’interface graphique Win32/C)

Voici mes observations et bien jusqu'à présent:

  • Les versions 1.1, 1.2.1 et 1.3 de mon éditeur de texte sont bloquées. Ils sont en C non C++, ont été compilés avec GCC 3.4.5 en mode unicode et sont distribués dans des fichiers Zip portables (par portable, je veux simplement dire aucun 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 C++, toujours en mode Unicode et toujours sous forme de 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, distribué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 distribué en tant qu’installateur inno-setup 5.
  • La nouvelle version de mon jeu, la 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 test bêta privée sous forme de fichiers Zip dans un dossier privé Dropbox.

Le problème est dû au bac à sable automatique avast 7.x. Voici ce qui se passe quand on essaie de démarrer un programme que avast n'aime pas:

  1. L'utilisateur double-cliquez ou appuyez sur Entrée sur l'exécutable
  2. Le programme démarre mais est écrasé presque instantanément et de manière forcée 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 basse
  4. SI un clic sur le bouton Continuer de la fenêtre contextuelle, l'exécution du programme est redémarrée et fonctionne normalement
  5. Si vous ne cliquez pas sur le bouton Continuer, Windows Explorer se fige, l'exécutable reste 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 du jeu, ne savent pas comment fonctionne l'anti-virus; je ne sais pas comment le mettre dans la liste blanche et pourquoi il le débloquera; ne sais pas comment modifier les paramètres de leur antivirus; s'ils voient le pop-up, ils ne le comprendront pas et finiront par avoir peur ou être déçu 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é gelé. 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 fichiers exécutables que je distribue. sinon, tous les programmes récents seraient bloqués; J'en ai deux qui sont (mon lecteur et la nouvelle version de mon jeu), tandis qu'un autre ne l'est pas (la dernière version de mon éditeur de texte). La version 1.7.2 du jeu a été compilée en mars 2012, tandis que la version 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, selon le même raisonnement; idem pour la compilation ANSI vs unicode.
  • Le runtime minGW C++, distribué sous forme de DLL liée automatiquement, 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'utilisez pas.
  • Mon lecteur audio et mon jeu ont la bibliothèque audio en commun; ce n'est pas la cause ultérieure, parce que la version 1.7.2 de mon jeu fonctionne et que la dernière version bêta privée ne fonctionne 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 à l’aide de winsock; donc par le même raisonnement, ce n'est pas la cause non plus.
  • SI c’était vraiment la réputation d’avast, pourquoi la version 1.4.1 de mon éditeur de texte, qui n’est pas bloquée, 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? Cela semble complètement illogique. Est-ce que 70 utilisateurs suffisent pour revendiquer quelque chose à propos de la réputation? Est-ce plus avec 300 utilisateurs? Je ne pense vraiment pas… Une masse critique de plusieurs dizaines de milliers d'utilisateurs est probablement nécessaire.
  • En plus de cela, j’ai aussi pensé que le fait de distribuer mes programmes sous forme de fichiers Zip portables peut être un motif de blocage pour avast, et inversement, le fait qu’un programme soit bien installé dans des fichiers programme peut être une raison de lui faire confiance. plus. J’ai donc fait une expérience simple: j’ai compilé un nouvel installateur inno-setup 5 pour la version bêta 2.0.0 de mon jeu, ainsi qu’un pour la version 1.3 de mon éditeur de texte, et découvre que les installateurs eux-mêmes ont été 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 bloquaient, en utilisant 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 dialogue de connexion, mais si je supprime tous les 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 qu’il ya quelque chose qu’avast n’aime pas 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 un indice? Avez-vous seulement une idée de la façon dont je pourrais procéder pour trouver ce que c'est afin que je puisse espérer résoudre ce problème? N'y a-t-il qu'un moyen d'analyser un tel problème, ou le monde du trou est-il vissé par avast?.

Notez que je suis une personne seule et non une entreprise. Tous ces programmes sont gratuits, je n’ai payé aucun IDE pour les développer, et je ne suis pas payé par les utilisateurs quand ils les utilisent, alors Je suppose qu'un certificat 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.

Thank you for reading.

40
QuentinC

Une bonne façon d’augmenter la confiance de tous les logiciels audiovisuels est de signer numériquement votre code. Thawte possède les certificats les plus reconnus et les moins chers, à partir de 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 où la signature de code n'était pas une option. J'écris en open source pour Joomla en php. Après avoir reçu les premières indications qu'Avast avait marqué mon dossier comme un (faux) positif, je les ai contactés et ils ont mis mon dossier en liste blanche en quelques heures. 

Afin de me faciliter la vie, je crée un fichier séparé avec la fonction supposément "dangereuse", de sorte que les modifications futures du programme ne nécessiteront pas de le soumettre à nouveau pour l'inscription en 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é par reverse engineering; néanmoins ils étaient gentils, rapides et efficaces.

13
Riccardo Zorn

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

Si votre programme utilise des pointeurs de déréférencement et écrit 200 octets dans un tampon de 100 octets ou similaire, il est probable que vous généreriez un code similaire à la signature d'une attaque connue. (puisque la plupart des attaques exploitent ce type d'erreur de programmation)

Vous devriez déboguer votre code (si vous utilisez linux, essayez valgrind ou efence) et assurez-vous que la mémoire est gérée correctement.

6
Gung Foo

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

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

Il illustre comment un antivirus peut littéralement devenir fou quand il s’agit de petits programmes liant 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’espérer que leur comportement sera loyal.

3
Emilio Garavaglia

Très bien compris, allez dans vos paramètres avast et il y a une zone où vous pouvez ajouter des paramètres d'exceptions> antivirus, puis faites défiler ce menu et une zone intitulée EXCLUSIONS où vous pouvez naviguer jusqu'à votre chemin Visual Studio. c:> john> documents> visualStudio2010> projects ::: sélectionnez votre chemin de projet et il sera ajouté à la liste des exceptions d'analyse et vous devriez pouvoir tester l'exécution de vos fichiers ... a bien fonctionné pour moi. J'ai également désactivé l'analyse approfondie dans le même menu en raison d'une suggestion d'un autre membre.

1
John Snow

Avast a une fonctionnalité appelée cybercapture/analyse approfondie.

C'est ce qui cause vos problèmes.

Cela ne dérange même pas avec l'heuristique. 

S'il n'y a pas de signature d'authentode, il le considérera comme suspect et l'enverra à avast pour qu'il le scanne, et tant qu'il n'aura pas déclaré son accord, vous ne pourrez pas l'exécuter. Une fois qu'ils ont déclaré que tout allait bien, tous les autres utilisateurs d'avast peuvent le faire en toute sécurité s'il correspond à leur version.

0
Chuck Cochems

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

Le coupable est Avast DeepScreen. De 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'il bloquait une application, ce qui rend "Supprimer Avast!". commentaire ci-dessus tout à fait approprié.

0
vsstage

Un commentaire ci-dessus fait référence à "si vous annulez les pointeurs". Si vous utilisez C ou C++, c'est ce que votre programme fera: c'est ainsi qu'ils fonctionnent.

Et comme tapismoker dit que ce n'est pas la peine de fixer vos propres paramètres Avast, ce sont toutes les personnes qui veulent télécharger votre logiciel mais qui sont effrayées par Avast. 

0
Nick Greenwood