EXE-Ausführung abfangen
-
Hallo.
Ich fange gerade damit an, eina art Antivirusprogramm zu schreiben (nur zu lernzwecken).
Bei z.B. Norton Antivirus kann man viren überhaupt nicht mehr ausführen. D.h. wenn eine EXE datei (oder auch andere dateien) ausgeführt werden, wird erst die Datei von Norton geprüft.
Genau sowas will ich auch realisieren. Leider haben meine google recherchen mich nicht weiter gebracht.
Es muss doch irgendwie möglich sein, dass wenn eine Exe ausgeführt wird mein Programm das mitbekommt und die Datei untersuchen kann. Also muss ich mich irgendwie in den Programmstart "einklinken". (allerding will ich nicht in den shell extensions rumpfuschen und einfach bei EXEfile->shell->open mein programm eintragen, so macht es norton ja auch nicht.)Beste Grüße, Robbie2
-
Ich weiss nicht genau wie Norton das macht aber es gibt (min.) zwei Möglichkeiten:
- Einen Kernel-Hook (bzw. hier gibt es auch eine Benachrichtigung, wenn ein Prozess gestartet werden soll)
- Global API-Hooking: http://research.microsoft.com/sn/detours/
-
Hallo. Ich hab mich mal über die sache mit dem Kernel Hook informiert.
Bis jetzt hab ich da so verstanden: es wird der Code der Funktion NTCreateProcess überschrieben (der anfang zumindest). Aber ist es überhaup möglich einfach so im windows kernell rumzupfuschen ? das könnt ja zu nem rießigen durcheinander führen, wenn das mehrer Programme machen.Auch hab ich wo gelesen, dass man dafür nen System Treiber schreiben muss. (hat da jemand ein link zu infos für mich).
Was ich auch noch nicht so ganz verstanden hab. ist wie ich eine schnittstelle zwischen kernel und user mode herstelle. Is das aus der sicht vom user mode die funktion CreateFile ?Gute n8...Robbie2
-
Norton überprüft schon wenn die Datei auf deiner Festplatte landet ob da was drin ist.
Gibt sicher auch noch die Überprüfung bei Programmstart aber mal das Dateisystem überwachen ist denke ich für dich am einfachsten um mal Netzwerk außen vor zu lassen.
-
Ein File-System-Filter-Driver ist vermutlich ein guter ANsatz (ist im neuesten DDK (oder besser gesagt KMDF)).