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é:
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:
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:
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:
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.