Make a Anti Virus with Qt
Yes, check the documentation for the QVirus class. There is also QAntiVirus ;)
[quote author="utcenter" date="1365247113"]Yes, check the documentation for the QVirus class. There is also QAntiVirus ;)[/quote]
Hah, you made my day :)
On a more serious note. There actually are viruses written with Qt, and not even small, statically linked stuff. The other day CPU on one of my machines started to spin 100% load and after a small investigation it turned out to be some mallware. Imagine my surprise when I found something like 120Mb worth of a folder with all the biggest Qt dlls inside (even webkit ones!) spawning processes like mad and making strange connections over the net. Tried several anti-virus/anti-mallware programs before cleaning it manually and nothing recognized it. I guess the idea is just too ridiculous to get on the radar :P
bq. [quote author="utcenter" date="1365247113"]Yes, check the documentation for the QVirus class. There is also QAntiVirus ;)[/quote]
I couldn't find that. O_o :D
Krzysztof Kawa - don't tell me you found it in Program Files\QuickTime and it contained the debug ddls as well?
Because that is what I found recently, even though I have no QuickTime installed, inside there was a QT folder and it was about 3.5 GB worth of Qt debug and release dlls.
I still cant quite figure out how it got there, I haven't installed it personally, and after checking logs I haven't installed anything else around the same time.
Didn't experience any odd system behavior though, but I still can't wrap my mind around how it actually got there...
Nah, it wasn't QuickTime. Can't remember exactly but the name was something short and it was sitting in the %AppData% directory. Don't know how it got there either since the computer is more or less a storage device, but I guess things just happen sometimes.
What is the world coming to, right? You used to think about viruses in terms of smart, tiny pieces of code sneaking around your system. Now they are obvious and bloated, sloppy packs of libraries and I wouldn't be surprised to find an uninstaller in the control panel one of these days :P
goblincoding last edited by
[quote author="Krzysztof Kawa" date="1365252428"]I wouldn't be surprised to find an uninstaller in the control panel one of these days :P[/quote]
HAHAHAHAHA!!! That's the funniest thing I've heard in weeks :D
Don't forget automatic updates ;)
Abbas Naghdi last edited by
bq. virus or anti virus?!
bq. Yes, check the documentation for the QVirus class. There is also QAntiVirus ;)
OoO ... !
It's a bit silly question to be honest. What's an anti-virus? A program that does stuff. Can Qt be used to write programs that do stuff? Sure ;)
Ok, I'll try to be serious now.
Qt will certainly ease writing the ui and user interaction parts of your program. There are also classes to access network for things like virus database updates. Local storage of information and quarantine objects can be tackled with Qt database support. As for the "core" part of what anti-virus does - Qt can help you access files (with QFile and friends) and Windows registry (with QSettings), but there are so many detailed aspects of writing such a software that it cannot be answered simply.
For example - there is no Qt class that will check if a homepage in some browser wasn't changed. There are classes to access files or registry that may hold that information, but there is no ready functionality.
Similarly there is no Qt class that will check the list of running processes and say that this or that one is "bad", because how could it? It's your job as a anti-virus implementer to find a way to tell that.
In this context, think of Qt in terms of low level "helper classes" that can ease some basic tasks, but don't expect ready made, specialized functionalities.
really interesting discussion :)
I don't think the complexity of an antivirus program lies in the actual executable, it is mostly the infrastructure - the virus definitions, data analysis and the team that is behind...
Qt can be used for the UI and core, but other than that, it is generic low level programming that is framework agnostic.