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