As much as I have used, loved, and relied upon avast for a long time now, I have become aware that you are a major problem for innocent indie developers.
It doesnt take much more than a google search to learn that your program is far too aggressive and many of us who cannot afford to have our small open source programs signed, or simple programs we write just to learn coding, suffer from our apps freezing up a folder or the computer, getting stuck in memory, or crashing immediately, often without ANY notification from the antivirus, and any way to stop it even by changing our programming practices (the code can be good or bad code, but avast still destroys it at runtime, and doesnt even notify the user it is responsible) The lucky ones get notified of it running in sandbox before crashing.
I have spent several hours wondering why my code crashed with no notifications or errors, only in desperation to shut off avast and it works fine. it can be a simple C program utilizing the console, or an ASM program that just pops open a window with the WIN32 API and says Hello world! with an ok button. doesnt matter the language. im sure pascal and other language users suffer too.
this means that if any of us distribute our code, hundreds of users will be unable to run it. it also can be frustrating for us who KNOW whats going on, simply because calling you guys in to claim there is a false positive about one of our executables on every file we write is not an option – this is time consuming and annoying to us both (i know what hell it would be to look through in a hex editor, believe me). Also, paying to have our executables signed is not always an option, as many of us do not make much/any money on what we do like you guys. One day, I hope to work for a company and get paid, but for now that is simply a dream – and one your program is hindering in this way.
so ultimately, I know what im going to ask of you is going to go unheeded – because im literally asking you guys to cripple your own program and TOTALLY REMOVE deepscan and sandbox and whatever checks for certification ONLY using heuristics like other antivirus (and thus, destroying your own competitive edge)
so I just want you to know, that since I wont be doing that, I WILL be actively deriding you from now on (and it cannot be considered slander or libel, not only because I Have notified you of the problem, but because it is the truth) and telling other users NOT to use Avast! and why it is broken whenever I release software.
in fact, it will be on the main, front page whenever I start a sourceforge project or website, along with alternatives from your competitors. I dont really see a way around this, because I know you arent going to remove the offending features, and even if I continued trying to battle with you guys by sending each silly program through, billions of other non-offending programs are still going to be blocked by avast simply on the merit of how the antivirus works. and its just going to add to both of our workdays to try and solve this.
I really loved avast and its features – although some are excessive (like the VPN since I have a real VPN that doesnt log, so I can break whatever rules I want all day with no fear of reprisal) for normal users anyway. I really didnt WANT to switch back to one of your competitors whom I viewed had an inferior product due to false positives.
but when your program starts blocking executable files at runtime – ones which I made and are NOT even picked up as a false positive – there is a problem. this is OVERTLY paranoid behavior – behavior that may block programs just because of the morality of the program (cracks, illegal software) or just because they do things that may or may not be suspicious or may not have a high reputation among the community (which means all legitamate indie software, many games, and other things like text editors and audio players that have no malware or even morally bad practices within)
this is wrong, simply. if its not in your virus database it should not be stopped. Id rather add in exclusions or create a tutorial to do so for my users if a false positive is present than simply have programs crash because avast is active. this has caused numerous problems with visual studio freezing during debug because of avast, or Code::Blocks. and could be causing problems for many many people out there, who simply dont know avast is at fault or why. If you miss a virus and someone gets hurt, its time to do a good old fashioned update just like all the other companies.
im sorry for being so rude, im just at my wits end with avast. I hope one day you fix your problem in a more concrete manner (by removing the offending features of the program entirely, or toning them down to an extreme degree by removing sub-features that cause these to be a problem – not removing them simply will not work in the larger scale). On that day I wont have to tell users of my software not to use yours anymore.
ideally I wouldnt have to say these things – it still is going to cause me problems (especially since im working on some game software I do intend to release publicly at some point) – but ideally I wouldnt have to try and convince people to not use your software because it breaks other software. ideally it would work on heuristics alone so that it would know there is no offending code and wouldnt intercept any programs at runtime if it didnt detect sketchy behavior.
but it does, and I cant really find an alternate, permanent solution other than removing avast from my own computer and insisting that anyone who wants to use software I write does the same.
at first I thought about work arounds. and I guess I could come to you each time I release something, and disable avast until restart on my own machine, but as I said, thats very annoying, and forgetting to disable it causes me all sorts of errors, plus Id be counting on giving you guys more work than you need to handle each time.
but really its the behavior of your antivirus that is the ultimate problem. Its a problem in the same sense windows is – it tries to idiot proof everything and gets in the way of anyone who knows whats going on themselves. if an idiot screws something up, it is simply their own fault and they should not be protected if it means removing functionality or freedom from anyone who isnt one.
there is no reason that code like this
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.DATA
ClassName db "SimpleWinClass",0
AppName db "Our First Window",0
.DATA?
hInstance HINSTANCE ?
CommandLine LPSTR ?
.CODE
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke GetCommandLine
mov CommandLine, eax
invoke WinMain, hInstance, NULL, CommandLine, SW_SHOWDEFAULT
invoke ExitProcess, eax
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra, NULL
mov wc.cbWndExtra, NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground, COLOR_WINDOW+1
mov wc.lpszMenuName, NULL
mov wc.lpszClassName, OFFSET ClassName
invoke LoadIcon, NULL, IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx, NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL
mov hwnd,eax
invoke ShowWindow, hwnd, CmdShow
invoke UpdateWindow, hwnd
.WHILE TRUE
invoke GetMessage, ADDR msg, NULL, 0, 0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax, msg.wParam
ret
WinMain endp
WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
.IF uMsg==WM_DESTROY
invoke PostQuitMessage,NULL
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.ENDIF
xor eax, eax
ret
WndProc endp
end start
or code like this
#include <iostream>
#include <cmath>
#include <vector>
void sieve(long long int num, long long primes[]);
int main()
{
long long n;
std::cout << "Input Number: ";
std::cin >> n;
std::cout << "Prime Factors: ";
if(n<2){
return 1;
}
int SquareRoot = sqrt(n);
std::vector<long long int> A(n);
sieve(A.size(), A.data());
for(int i=0; i<n; i++)
{
if(A[i] == 1 && i<SquareRoot && n%i==0)
{
std::cout << " " << i << " ";
}
}
return 0;
}
void sieve(long long int num, long long int primes[])
{
long long int i, j;
int SquareRoot = sqrt(num);
for(i=0; i<SquareRoot; i++)
{
primes[i] = 1;
}
primes[0]=0,primes[1]=0;
for(i=2;i<num;i++)
{
for(j=i*i; j<SquareRoot;j+=i)
{
primes[j]=0;
}
}
}
should be blocked at runtime by avast. but these, simply printf() and cout << statements, and much much more end up being blocked by avast. (actually that second one may run with avast on, but its really a toss up which code will and wont execute because of avast and I dont feel like testing out everything AGAIN to see which examples get broken – the first assembler code which just opens a blank window DOES get blocked)
the point is, all it is is standard operating system calls and output statements and it gets blocked. so how can anyone write code whilst using avast without paying for certificates? in development it is totally possible to just turn off or remove avast, or add an exclusion for the project files folders.
but at release time, these arent options for us. our users will suffer simply because of your program being installed and I kind of find it offensive and terribly inconvenient. never in my life had I had an antivirus interfere with software development until now, and as these problems and their sources are well known in the community, and your own business model relies on this behavior in order to be different from the crowd I find it highly unlikely that you would change to fit the needs of us few, especially since it would remove a whole sector of things avast can probably stop that your competitors cant.
im not saying these features dont do anything useful – but rather that the harm coming out of them is greater than the good it does. the reason ive always loved OS systems like UNIX and linux is that I, as admin, can run whatever code, malicious, legal, or not that I want. that I, as admin, can tell it to delete the hard drive out from under myself and it will happily comply, crippling my system or not.
I only stick with Crappy windows now simply for the sake of video games and trying to create software that a majority of users can run. thats it, the only two reasons. Now avast has become a third problem in the same category that makes me hate windows, as it extends the ‘do it for you’ attitude even further by choosing whats safe to run at runtime, even if a virus has not been detected. which is simply unacceptable and virus like behavior in and of itself.
I at least wanted to publicly bring this topic up here. even though I have little more to say on the matter (other than justifications for my point of view here). I wanted to bring it up so that you are aware you are causing people learning to code and possibly trying to release unknown open source software for the first time, gigantic problems. I wanted to be honest with why, in the future, you will possibly see websites telling users to switch away from your product or entirely disable it or add in exclusions to it down the line. but I will reccomend users switch away from avast as a first tier permanent solution since it will stop them from having future problems as well.
I do think, overall you have the best product on the market. I love the support you offer, I love the product and everything about it (except for this problem), and that the detection rate is great with low false positives. that you DONT in fact get in my way with a lot of things where other antivirus stick their nose in.
I just cant stand behind something that has the capability to choose what can and cant run at runtime based on reputation alone, deepscan, or certificates when often times, these methods block totally legitimate code from being executed… the WORST PART is that it doesnt even notify you that avast is causing it, and simply makes it look like the program is bad or doesnt run at all. there is NO NOTIFICATION that avast is crashing the process a majority of the time. this makes it a terrible program. Im sorry.