Schon mal da gewesen, fertig :-) Zurück im Jahr 2000 war mein erstes Windows-Programm überhaupt ein filter hook driver.
Was ich getan habe, war die Implementierung des Filter-Hook-Treibers und das Schreiben einer Userspace-Anwendung, die eine Filtertabelle darauf vorbereitet, was erlaubt und was nicht erlaubt ist. Wenn Sie die ersten blauen Bildschirme sehen (siehe unten für meinen Debug-Tipp im Kernel-Modus), ist der Filter-Modus-Treiber recht einfach zu benutzen ... er gibt jedes Paket an eine Funktion, die Sie geschrieben haben, und hängt vom Rückgabecode ab oder lässt es passieren.
Leider Pakete auf dieser Ebene sind QUITE roh, Fragmente werden nicht wieder zusammengesetzt und es sieht eher aus wie die "Netzwerkkarte" Ende der Dinge (aber keine Ethernet-Header mehr). Sie werden also eine ziemlich schlechte Zeit haben, die Pakete zu dekodieren, die mit dieser Lösung gefiltert werden sollen.
Es gibt auch den Firewall-Hook-Treiber, wie in dieser codeproject article diskutiert.
Wenn Sie auf Vista oder Server 2008 sind, sollten Sie sich stattdessen WFP (Windows Filtering Platform) ansehen, das scheint die vorgeschriebene API des Tages für das Schreiben von Firewalls zu sein. Ich weiß es nicht anders als google turing es vor ein paar Minuten, als ich für den Filter Haken Treiber gegoogelt.
Update: Passwort des Debug-Tipp:
Sysinternals DbgView zeigt Kernelmodus DbgPrint Ausgang und wichtiger - auch sie von der Dump-Datei Ihres letzten blauen Bildschirm erzeugte lesen kann. Also streue deinen Code mit dbgprint und wenn es Bluescreens sind, lade einfach den Dump in dbgview, um zu sehen, was passiert ist, bevor es gestorben ist ... SEHR nützlich. Damit habe ich es geschafft, ohne einen Kernel-Debugger zu haben.
helfen Da es Raw Sockets es wird nicht möglich sein, eingehende TCP-Pakete unter Windows 7 zu schnüffeln. (Microsoft verkrüppelte rohe Sockets auf Nicht-Server-Versionen von Windows) – CodesInChaos
Ich brauche leider eine WFP-Lösung/Beispiel. – ChopperCharles