Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#37

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 8. Okt 2006, 23:56
Zitat von Dirkmswt:
Ich setze aber im Moment wenig .net für kommerzielle Software ein da meine Crypt Programme für Maschinensprachige Programme einfach sicherer sind.
Von Reverse Engineering hast du auch nicht viel Ahnung, oder?

Zitat von Dirkmswt:
Meine Meinung ist das diese Technologie erst in ca 1-3 Jahren wirkliche Vorteile bringt.
... und du fängst erst dann an damit zu arbeiten? Könnte zu spät sein ...

Zitat von Dirkmswt:
Um nochmal auf c++ zurückzukehren: Es gibt sicherlich gute Software auf c++ Basis,vorallem Sysinternals hat gezeigt was möglich ist mit ihren Tollen Beispielen die sich auch alle wunderbar Compilieren lassen.
Och, schau mal auf codeproject.com da findest du noch eine Menge mehr was sich kompilieren läßt. Ich muß dir rechtgeben, daß die C/C++-Compiler allesamt nicht sonderlich clevere Fehlerausgaben haben - manchmal änderst du ein Zeichen und bekommst hunderte Fehler. Auch das Aufspüren der Fehler wird dadurch nicht leichter. So gesehen hast du ein Manko entdeckt, bei dem ich dir voll beipflichte. Jedoch C/C++ mal eben abzutun, wenn wahrscheinlich mehr als 50% aller nativen Programme (also Nicht-Skripte) auf der Welt in C oder C++ geschrieben sind, halte ich doch für starken Tobak.

Zitat von Dirkmswt:
Ich lass mich auch gern belehren das c++ besser ist für Treiberentwicklung,denn da hab ich noch nicht soviel Erfahrung.Wie auch nach ca 5 Tagen neben meiner Hauptarbeitszeit.
C++ ist nicht besser, warum steht oben in meiner Begründung. Allerdings benutzt man den C++-Compiler auch gern bei Treiberprojekten wegen der strikteren Typenüberprüfung und der erweiterten Syntax (name spaces, deklarieren von Variablen direkt vor deren Benutzung usw).

Zitat von Dirkmswt:
Delphi ist aber auch alles andere als ein Spielzeug
Jupp, ist es. Aber ich kenne Manager die - trotz gegenteiliger (offensichtlicher) Beweise - darauf bestehen, daß ihre Produkte in C/C++ geschrieben wurden, nur weil es Menschen gibt, die Delphi - zu Unrecht, wie ich schon sagte - als Spielzeugsprache betrachten. Und auch Delphi hat deutliche Nachteile gegenüber C++, so beispielsweise das Fehlen eines Präprozessors (ja auch das ist Teil des Sprachstandards), Fehlen von Stackobjekten, Fehlen von Templates usw ...

Zitat von Dirkmswt:
Pascal ist seit jeher ein guter Compiler mit dem schon 100000e Programme geschrieben wurden.
Siehe z.B. Amiga oder C64
Pascal ist eine Sprache und jeder Pascal-Compiler unterscheidet sich von den anderen. Erkennst du den Nonsens in deiner Aussage?

Zitat von Dirkmswt:
Delphi ist nunmal ein OOT Tool um die schönen 1000e unnötigen Zeilen für Fenster usw einzusparen was die Lesbarkeit um einiges verbessert.
Tip: das ermöglicht die MFC auch, wenn man sie zu nutzen weiß.

Zitat von Dirkmswt:
WX Widgets kenne ich natürlich aus der Linux Entwicklung,ist nicht schlecht,genauso wie die ganzen anderen Librarys wie Allegro für Multimedia was sogar alles Plattformunabhängig ist.
Finde diese Tools aber allesamt wesentlich besser in der Zuverlässigkeit als die MFC!
Ansichtssache. Wären sie allerdings nicht gut, hätten sie sich nicht solange gehalten.

Zitat von Dirkmswt:
So aber jetzt zu meiner Frage,die ganze Zeit wurde hier was von einem tool erwähnt wo Treiber für das XPddk Kompiliert.
Wie soll das denn genau gehen?
Muss ich da dann alle c++ Dateien angeben oder muss ich dann eine Projektmappe anlegen?
Nein, man benutzt das Tool namens BUILD (wie oben schonmal beiläufig erwähnt), welches allen DDKs beiliegt und bspw. Microsoft-intern auch verwendet wird um das OS zu kompilieren. Dieses Tool schaut nach den DIRS und SOURCES Dateien in den Verzeichnissen wo die Quellen für den Treiber liegen. Da du ja 90% des DDK durchgearbeitet hast (wie das bei einem XP DDK ohne Samples gehen soll ist mir allerdings ein Rätsel), solltest du mehrfach auf Hinweise auf die SOURCES-Datei gestossen sein. Die DIRS-Datei ist nur ein Verweis auf Verzeichnisse in denen BUILD dann SOURCES-Dateien vorfindet. Die Syntax der SOURCES-Datei mußt du quasi im Schlaf beherrschen. Wie schon erwähnt, ist die Benutzung des VC-Compilers für Treiber keine Option.

Zitat von Dirkmswt:
Die Treiberentwicklung stellt für mich nicht unbedingt das Problem dar.
Sorry, das bringt mich zum Lachen. Ich dachte auch, daß ich nach knapp 4 Jahren Treiberentwicklung und autodidaktischem Lernen fast alles weiß, bis ich vor einem Jahr zwei OSR-Seminare besuchte. Die haben mich eines Besseren belehrt.

Treiberentwicklung also kein Problem?
  • Nenne mir auswendig mindestens 4 IRQLs!
  • Was sind IOCTLs?
  • Was sind IRPs?
  • Wie baut man sich seine eigenen IRPs und was kann man damit machen?
  • Nenne 2 der wichtigsten Funktionen für einen Filtertreiber!
  • Was ist das "Inverted Call Model"?
  • Was sind die Vorteile des "Inverted Call Model"?
  • Wann mußt du eine Cancel-Routine für einen IRP anlegen? Was ist zu beachten?
  • Darf ein IRP verzögert werden? Wenn ja, wie lange darf ein IRP verzögert werden?
  • Was ist bei der Verzögerung eines IRPs vor und nach der vollständigen Verarbeitung zu beachten?
  • Warum kann man auf PagedPool nur unterhalb DISPATCH_LEVEL zugreifen?
  • Was sind Spinlocks, wozu dienen sie, welche Auswirkung haben sie auf SMP-Systemen?
  • Wenn ich einen Spinlock halte, wie lange darf ich diesen halten?
  • In welchem Kontext wird die Dispatch-Routine für IOCTLs üblicherweise aufgerufen? Inwieweit hängt das von der Position des Treibers im Treiberstack ab?
  • Wie groß ist der KM-Stack maximal?
  • In welchem Kontext wird DriverEntry aufgerufen? Was sind die Implikationen für das Öffnen/Erstellen von Dateien oder anderen Objekten?
  • Welcher Status darf in DriverEntry nicht zurückgeliefert werden? Was macht der I/O-Manager sonst mit deinem Treiber?
  • Welche drei Typen von I/O gibt es und welche Implikationen haben sie im einzelnen?
  • Was ist der Unterschied zwischen FDO und PDO? Was bedeuten diese Abkürzungen und darf ein Treiber beide Typen erstellen?
  • Was ist ein "Bus Driver" (und ich meine nicht den Busfahrer)?
  • Nenne Vor- und Nachteile des Schichtmodells bei NT-Treibern.
  • Warum ist es falsch Opcodes wie IN/OUT in einem Treiber direkt zu benutzen? Was ist die Alternative und warum ist sie besser?
  • Was sind Mini-Treiber, wieviele Typen davon gibt es?
  • Was sind die Aufgaben des I/O Managers, Cache Managers, Memory Managers, Security Monitors?
  • Wann muß man KernelMode als Quelle eines Requests angeben? Wieso?
  • Kann man die Major Functions im DRIVER_OBJECT mit 0 überschreiben? Was passiert dann?
  • Was ist bei der Portierung eines 32bit-Treibers nach 64bit zu beachten?
... genug Fragen? Wieviele kannst du ohne einen Blick in das DDK - von dem du vorgibst 90% zu beherrschen - beantworten?

Zitat von Dirkmswt:
Hab mir die Beispiele angeschaut von allen Beispielen aus dem ntddk da in dem XPddk bei mir keine Demos sind.
Keine Ahnung was für ein DDK das sein soll. Wahrscheinlich hast du dann nichtmal einen Compiler dabei. Wenn du willst, kann ich dir das 2003 SP1 DDK zum Download bereitstellen, oder du meldest dich bei connect.microsoft.com an und nimmst am Betatest des WDK (Nachfolger von DDK+IFSK) teil.

Zitat von Dirkmswt:
Hab auch die Hilfe nochmals angeschaut,da steht viel drinnen über ACPI usw,
Es ist mir ein Rätsel was für eine Auflage des DDK du hast. Daß das NT4-DDK räudig war, da wird dir jeder beipflichten, aber das XP DDK ist das erste "gute" DDK dessen Erbe nun eben vom 2003er und vom WDK angetreten wird. Und dort ist die Doku sehr ausführlich, die Beispiele ebenfalls und man kann wirklich was draus machen. Als ich anfing, da hatte ich nur das NT4 und das W2K DDK.

Übrigens ist das DDK kostenlos verfügbar. Nur eben nicht zum Download. Das macht MS seit dem XP DDK, weil seitdem auch der Compiler enthalten ist. Du bezahlst zwar den Versand, kannst dir aber auch 100 DDK-CDs anliefern lassen und bezahlst die gleiche Versandpauschale. Wenn du willst, kannst du auch die orginale DDK-CD (2003 SP1) von mir zugeschickt bekommen (statt Download).
Nicht kostenlos hingegen ist das IFS Kit. Dieses kostete zeitweise knapp 1000 US-Dollar und ist inzwischen für reichlich 100 US-Dollar erhältlich. Voraussichtlich wird es ja in dem WDK enthalten sein und dann auch kostenlos verfügbar sein.
Übrigens kann es sein, daß du hier etwas verwechselst. Es gibt ein Angebot von MS wo du dann allerdings eine Menge CDs mit Seminar-Videos und den alten NT Insider-Ausgaben oben hast - das kostet dann deutlich mehr als die Versandpauschale des DDK, hat aber auch einen deutlichen Mehrwert.

Zitat von Dirkmswt:
nur vermisse ich eben die essentiellen Compileranweisungen ohne die mir der beste Quellcode nix bringt.
Tja, hättest du dir mal meinen Rat zu Herzen genommen und dich mal nach Hier im Forum suchenDDKWizard umgeschaut, dann hättest du eine sehr einfache Beschreibung zur Einrichtung von Bei Google suchenDDKBUILD und einen Wizard zur einfachen Erstellung von "normalen" Treiberprojekten erhalten. Vorteil: du mußt dich nicht "manuell" mit dem BUILD aus dem DDK und den Vorbedingungen (Starten der DDK-Umgebung) abgeben.

Zitat von Dirkmswt:
Vielleicht weiß ja jemand von euch eine gute Internetseite etc...
Von der Microsoftseite hab ich dazu auch noch nichts gefunden oder irgendwie übersehen
Ähem ... übersehen ... kann man wohl sagen. Ein Rätsel wie sowas beim Durcharbeiten von 90% des (welches?) DDK durch die Lappen gehen konnte ...

Nachtrag:
Von den Strukturen die Nico erwähnte (__fastcall dürfte da bspw. hervorstechen) abgesehen, sind viele der vermeintlichen Funktionen im DDK nur Makros. Dort wäre eine Umschreibung als Funktion auch reichlich sinnlos, was einen weiteren Grund liefert bei C/C++ zu bleiben ...
  Mit Zitat antworten Zitat