My programs are blocked by avast anti

I'm an amateur programmer, and I'm getting desperate and mad because of a big issue: most of my programs are blocked by avast anti-virus, while some aren't, and I don't understand why. The more I try to investigate, the less I understand what the problem could be.

I'm requesting your help to find a solution so that my programs are no longer blocked, or, as a default, at least some strong clues that would explain why it might be the case. There are already many topics about that on the web. However, most of them give only superficial answers: they just explain how anti-virus works with signatures and detection heuristics, or state that you just have to add the offending application in the white list without asking any other question. While it is certainly correct, it's not acceptable answers in my sens, because I'm still left with my own programs that refuse to work without any concrete idea to start investigating.

First of all, the only anti-virus that blocks my programs is avast 7.x. No other anti-virus see any inconvenient to run my software. Secondly, I haven't avast myself; it is installed on a friend's machine. I have windows 7, he has windows XP. I'm completely sure that the problem is avast only: when it is temporarily disabled, or if the program is added to its white list, everything works nicely as expected.

Three different programs are in trouble :

  • A text editor, with the goal to replace windows notepad while keeping simple, efficient and customizable
  • A small amateur audio player very simple to use
  • The client program of an online game platform, currently having more than 1000 users
  • The first one is open source, I can give a link to the executable and the source code if needed. The two others are closed source but free to use, I can give a link to the executable of the current version only. the only obvious common things between these three programs are me as a developer, my windows 7 machine that compiled them, the compiler family which is MinGW/GCC, and they are all win32 GUI applications without any framework (no MFC, no WPF, no QT, WXWidgets or whatever; just pure win32/C GUI applications)

    Here are my observations and though so far :

  • Versions 1.1, 1.2.1 and 1.3 of my text editor are blocked. They are in C not C++, have been compiled with GCC 3.4.5 in unicode mode, and are distributed in portable zip files (by portable, I simply mean no installer and no installation needed)
  • Version 1.4.1 of the same text editor isn't blocked. It has been compiled with GCC 4.7.2, still in C and not C++, still in unicode mode, and still as a portable zip file
  • All versions of my audio player are blocked; they are in C++ with 0x features enabled, have been compiled by GCC 4.7.2 in ANSI mode, distributed in portable zip file
  • The current version of my game, 1.7.2, isn't blocked. it is in C, has been compiled with GCC 3.4.5 in ANSI mode, and is distributed as an inno-setup 5 installer.
  • The new version of my game, 2.0.0, which is currently a private beta, is blocked. It is in C++ with 0x features enabled, has been compiled with GCC 4.7.2 in unicode mode. I share it with my private beta-testing team as zip files within a private dropbox folder
  • The problem is caused by avast 7.x auto-sandbox. The following happens when one try to start a program disliked by avast :

  • The user double-click or hit enter on the executable
  • The program starts but is almost instantaneously and forcibly crashed by avast
  • A pop-up appears and says something like: avast has put this program into his sandbox because his reputation is low
  • IF one click on the continue button of the pop-up, the execution of the program is restarted and works normally
  • If one don't click on the continue button, windows explorer freezes, the executable remain in the task manager and invariably use 76 KB of RAM while being impossible to kill; finally after about 5 minutes, windows explorer unfreezes, the program is restarted and works normally
  • This is unacceptable. newbie users of my program, especially the game, don't know how anti-virus works; don't know how to put it into the white list and why it will unblock it; don't know how to change settings of their anti-virus; if they see the pop-up, wont understand it and will end up being afraid or disappointed because they can't play without knowing why; and if they don't see the pop-up, I can't expect them to wait 5 minutes with a half-freezing computer. each time they want to play.

    From there, I made the following deductions :

  • My machine isn't itself infected and no virus is injected into the executables I distribute; otherwise, all recent programs would be blocked; I have two which are (my player and the new version of my game), while one is not (the latest version of my text editor). The 1.7.2 of the game has been compiled in march 2012, while the 1.4.1 of the text editor is from October 2012.
  • The newest version of GCC 4.7.2 is not in cause, by the same reasoning; same for ANSI vs unicode compiling.
  • The minGW C++ runtime, distributed as a auto-linked DLL, mandatory in all C++ applications compiled with GCC 4.7.2, is probably not the cause, because many well known programs use it; and my text editor is blocked and is in C, and thus don't use it.
  • My audio player and my game have the audio library in common; this later is not the cause, because the version 1.7.2 of my game works and the newest private beta not. And of course, that audio library is also used in many other known or less known applications that aren't blocked.
  • Both the player and the game access the network using winsock; so by the same reasoning, it's not the cause either
  • IF it really were the reputation thing of avast, why the version 1.4.1 of my text editor, which is not blocked, has only been downloaded around 70 times, while the version 1.3 which is blocked has been downloaded more than 300 times ? IT looks completely illogical. Is 70 users sufficient to claim something about reputation ? Is it more with 300 users ? I really don't think so... probably a critical mass of a dozens thousands users is necessary.
  • Additionally to that, I also though that the fact I'm distributing my programs as portable zip files may be a reason for avast to block, and conversely, the fact that a program is well installed in program files may be a reason to trust it more. So I made a simple experience: I compiled a new inno-setup 5 installer for the beta 2.0.0 of my game, as well as one for the version 1.3 of my text editor, and discover that the installers themselves were blocked !

    I made another experience with my friend, where I tried to find exactly the place where the programs crash, based on using MessageBeep (MessageBox is also blocked !). I didn't noticed anything problematic. The game is blocked when SetDlgItemText is called for the first time in the login dialog box, but if I remove all SetDlgItemText it is blocked further down. IN the text editor, it is blocked while populating the menu bar...

    My conclusion is, there is something that avast don't like in the new version of my game, in the old versions of my text editor, and in my audio player. Something that is absent in the newest version of my text editor. What could it be ? Do you have any clue ? Do you have only an idea on how I could proceed to find what it is so that I can hope to fix it ? Is there only a way to analyse such a problem, or is the hole world screwed by avast?

    Note that I'm a single person and not a company, all those programs are free to use, I have not pay any IDE to develop them, and I'm not paid by the users when they use them, so I assume that a certificate is probably not affordable at all. Moreover, I don't know if it's a true solution, how to sign an application compiled with GCC, and I really don't want to switch to an "usine à gaz" like MSVC. I would prefer strongly forget that option if there is any other solution, even a very dirty one.

    Thank you for reading.


    A nice way to increment the confidence of all AV software is to digitally sign your code. Thawte has the cheapest well-recognized certificates starting below 100 € / year.

    -- update after @Herr_Doktor's comment nearly two years later --

    I recently ran into a new situation when code signing was not an option - I write open source for Joomla in php. After I received the first indications that Avast marked my file as a (false) positive, I contacted them and they whitelisted my file within hours.

    In order to make my life easier, I am creating a separate file with the supposedly "dangerous" function, so that future changes to the program won't require to re-submit it for whitelisting.

    Possibly the speed in their response was helped by the fact that reading a short php file is faster than reverse engineering compiled code; nonetheless they were kind, quick and effective.


    AV programs work by analyzing files for patterns of known "bad behaviour".

    If your program is dereferencing pointers, writing 200 bytes into a 100 byte buffer or similar, chances are you will generate code that is similar to a signature of a known attack. (since most attacks exploit these kinds of programming errors)

    You should debug your code (if on linux try valgrind or efence) and make sure that memory is handled correctly.


    You can be interested in this article:

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

    It illustrate how antivirus can literally go nuts when dealing with small programs linking a simple C run-time library.

    The only thing you can do is signal the problem to the antivirus makers and hope in a fair behavior from them.

    链接地址: http://www.djcxy.com/p/27842.html

    上一篇: 病毒可以中断一个dll函数调用

    下一篇: 我的程序被avast反封锁