Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Treiber - Programmierung (https://www.delphipraxis.net/53051-treiber-programmierung.html)

mumu 9. Sep 2005 09:49


Treiber - Programmierung
 
Hallo!

ich wollte jetzt ein bisschen einsteigen in die Treiber-Programmierung. Nur leider habe ich schon große Probleme überhaupt mal ein Projekt zum laufen zu bekommen.

Ich habe das DDK (Driver Development Kit, C:\WINDDK\2600.1106) sowie das Visual Studio .NET 2003 auf meinem Rechner installiert. Ich würde jetzt gern das mitgelieferte Passthru Beispiel mal ausprobieren (C:\WINDDK\2600.1106\src\network\ndis\passthru). Problem ist jedoch, dass hier keine Solution mitgeliefert wird und ich jetzt nicht weiß, wie ich das Projekt anlegen soll, welche Dateien hinzufügen, welche Parameter ich einstellen muss, usw... Gerne würde ich auch, wenn es möglich ist, den treiber direkt mit Visual Studio 2003 debuggen.

echt genial wäre, wenn jemand mir erklären würde, wie man bei soetwas vorgeht und welche einstellungen getätigt werden müssen.

vielen dank schonmal

RavenIV 9. Sep 2005 09:53

Re: Treiber - Programmierung
 
da wir hier in einem Delphi-Forum sind, könnte es möglich sein, dass dir keiner mit Visual Studio weiterhelfen kann.
es gibt doch bestimmt auch foren zu Visual Studio, versuch doch dort mal dein glück...

Robert Marquardt 9. Sep 2005 09:55

Re: Treiber - Programmierung
 
Reingefallen. Treiber werden auf der Kommandozeile mit Build uebersetzt.
Genaugenommen brauchst du Visual Studio ueberhaupt nicht, da das DDK mit Compiler kommt.
Es ist aber trotzdem sehr angenehm die Beispielprogramme damit zu uebersetzen.

mumu 9. Sep 2005 10:03

Re: Treiber - Programmierung
 
jo ich weiß, das mit build hab ich schon rausgefunden, nur möchte ich es lieber komfortabel mit dem visual studio compilieren, das müsste ja auch gehen, braucht man blos die richtigen projekteinstellungen

Olli 9. Sep 2005 10:06

Re: Treiber - Programmierung
 
Zitat:

Zitat von Robert Marquardt
da das DDK mit Compiler kommt.

... aber erst seit dem XP-DDK. Ansonsten hat Robert recht. Du kannst VC dennoch benutzen um etwas zu übersetzen, allerdings muß man seine Projekte dann immer sehr stark ummodeln damit sie auch den Treiber kompilieren. Ich würde dir einfach BUILD empfehlen. Der ruft den eigentlichen Compiler auf und sorgt dafür, daß alle Dateien übersetzt werden.

Aber es gibt da etwas anderes, was dir noch nicht bewußt zu sein scheint.
Zitat:

Zitat von mumu
Gerne würde ich auch, wenn es möglich ist, den treiber direkt mit Visual Studio 2003 debuggen.

:shock: ... dein VS läuft aber im Usermode und der Beispieltreiber im Kernelmode.
Unabhängig davon brauchst du noch einen Checked Build von Windows (mindestens der Kernel muß checked sein um überhaupt Ausgaben zu bekommen) und WinDbg von MS.

mumu 9. Sep 2005 12:15

Re: Treiber - Programmierung
 
oki, erstmal vielen dank für die antworten.

Zitat:

Du kannst VC dennoch benutzen um etwas zu übersetzen, allerdings muß man seine Projekte dann immer sehr stark ummodeln damit sie auch den Treiber kompilieren.
und wie mach ich das? hast du vielleicht ne webseite, die das erklärt.

Zitat:

... dein VS läuft aber im Usermode und der Beispieltreiber im Kernelmode.
das heißt, mit VS kann ich nicht debuggen?
WinDbg hab ich mir schonmal angeschaut. habs nicht hinbekommen :-( Der wollte immer Symbole?!
Woher bekomme ich ein Checked Build von Windows?

Olli 9. Sep 2005 12:23

Re: Treiber - Programmierung
 
Zitat:

Zitat von mumu
und wie mach ich das? hast du vielleicht ne webseite, die das erklärt.

Ich habe das früher immer gemacht, als es noch kein XP DDK gab. Muß ich mal gucken, ob ich so ein Projekt noch irgendwo finde.

Zitat:

Zitat von mumu
das heißt, mit VS kann ich nicht debuggen?

Bingo!

Zitat:

Zitat von mumu
WinDbg hab ich mir schonmal angeschaut. habs nicht hinbekommen :-( Der wollte immer Symbole?!

Die bekommst du a.) von der MS-Seite und b.) vom Compiler (speziell für deinen Treiber) - das ist die PDB-Datei, welche erzeugt wird.

Zitat:

Zitat von mumu
Woher bekomme ich ein Checked Build von Windows?

MSDN-Abo. Kostenlos garnicht.

Robert Marquardt 9. Sep 2005 12:23

Re: Treiber - Programmierung
 
Wie sollst du mit VS als Usermode-Programm einen Kerneltreiber debuggen koennen?
Die Checked Builds von Windows sind schlicht Windowsversionen die mit Debuginfos uebersetzt wurden.
Die Symbole sind das was sonst im MAP-File steht.
Checked Builds gibt es als Teil des MSDN-Abos. Wer ernsthaft Treiber entwickeln will kommt eigentlich an einem MSDN Abo auch nicht vorbei.

mumu 12. Sep 2005 00:48

Re: Treiber - Programmierung
 
Zitat:

Ich habe das früher immer gemacht, als es noch kein XP DDK gab. Muß ich mal gucken, ob ich so ein Projekt noch irgendwo finde.
und Olli hast du was gefunden?

Zitat:

Checked Builds gibt es als Teil des MSDN-Abos. Wer ernsthaft Treiber entwickeln will kommt eigentlich an einem MSDN Abo auch nicht vorbei.
ja, also ich hab ein MSDN Abo von der Uni aus, da hab ich mir jetzt mal das Checked Build heruntergeladen.


also ich möchte gern nen NAT (network address translation) Treiber programmieren. wie geh ich da am besten vor? welches treiber-projekt aus dem ddk kann ich da am besten als grundlage nehmen? ist da der passthru geeignet?

Olli 12. Sep 2005 08:19

Re: Treiber - Programmierung
 
Zitat:

Zitat von mumu
Zitat:

Ich habe das früher immer gemacht, als es noch kein XP DDK gab. Muß ich mal gucken, ob ich so ein Projekt noch irgendwo finde.
und Olli hast du was gefunden?

Noch nicht. Ich befürchte, daß die alle auf irgendwelchen CDs liegen. Und ich habe aktuell nicht genug Zeit alle CDs zu durchsuchen.

Zitat:

Zitat von mumu
also ich möchte gern nen NAT (network address translation) Treiber programmieren. wie geh ich da am besten vor? welches treiber-projekt aus dem ddk kann ich da am besten als grundlage nehmen? ist da der passthru geeignet?

Also IMO müßte NAT noch eine Schicht tiefer ansetzen als NDIS. Eine Idee von mir wäre, daß du den TDI-Treiber von Bei Google suchentdi_fw verwenden könntest. Im Grunde ist NAT ja ein die eine Richtung ein Multiplexer und verwaltet interne IPs und externe IP zusammen mit Hardwareadressen.

mumu 12. Sep 2005 10:20

Re: Treiber - Programmierung
 
macht der tdi_fw treiber das selbe wie drvfltip.

in der readme von tdi_fw steht:
Zitat:

TdiFw now can use filter-hook driver in Win2k (XP, 2003) to get packets
and check them against state table.

"ipfilterdriver" driver must be started before "tdifw" service.
der drvfltip driver basiert ja auch auf den ipfilterdriver.

weil dann hab ich nämlich folgende probleme, wenn ich eine solche art von treiber nehme:
Zitat:

Result: Filter-Hook Driver isn't the best in nothing, but it hasn't bad characteristics. However why this method isn't used in commercial products?

The answer is simple. Although this driver hasn't bad characteristics it has a great disadvantage, too. As I mentioned this before, only one filter function can be installed each time. We can develop a great firewall, it can be downloaded and installed by thousands of users but if other applications use this filter (and installed the filter function before) our program won't do anything.

This method has another disadvantage not documented by Microsoft. Although DDK documentation says that you can access packet content in filter function, it's not real. You can access packet content for received packets but for sent packets you can only read IP and TCP, UDP or ICMP header. I don't understand why...

Microsoft introduced another type of driver without this limitation in Windows XP: firewall-hook driver. Its installation is very similar, but Microsoft doesn't recommend its use because "it ran too high in the network stack". Maybe this driver will disappear in later Windows versions.

Olli 12. Sep 2005 10:29

Re: Treiber - Programmierung
 
Um ehrlich zu sein, dachte ich, daß der Filter-Hooktreiber nur ab Windows 2000 Server existiert.

tdi_fw kann diese Methode benutzen, aber soweit ich es verstanden habe, wird standardmäßig eine andere verwendet. Müßte ich mir wohl den Source mal zu Gemüte führen.

mumu 14. Sep 2005 11:43

Re: Treiber - Programmierung
 
ok, also wer lesen kann ist klar im vorteil. ja, bei dem treiber hat man mehrere möglichkeiten, mit
Code:
#define USE_TDI_HOOKING
kann man TDI-Hooking aktivieren. Dann hat man eben die möglichkeit einen Filter-Treiber zu installieren (ist bei meinem Windows XP Prof. auch vorhanden.) und was für Möglichkeiten gibt es noch? Hast du es dir schonmal angeschaut?

was ist der Unterschied zwischen nem Filter-Treiber (wie das auch drvfltip ist) und nem TDI-Hooking Treiber?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz