| |
|
|
- Seite 1 - |
|
| Hallo Frank...
Da mir Cpp zuviel Beiwerk hat, was mich vielleich beim Treiberprogging stören könnte, habe ich mich dafür entschieden ASM zu lernen. Kannst du mal einen genauen Downloadlink der Version angeben, mit der du proggst? Ich werde dich demnächst garantiert mit zigtausend Fragen nerven (hab jetzt schon Bauchschmerzen bei dem, was da auf mich zukommt)..
Gruß
Andreas |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
| Meinst du? Warum? Hab weder Erfahrung mit ASM noch mit C. |
|
|
| |
|
|
|
| Nun ich denke die Vorarbeit um mit Asm einen Treiber kompilieren zu können ist erheblich - zumal es für C bereits Libs & Co gibt. Das DDK für XP ist IMHO leider kostenpflichtig und ich bin auch ldr. nicht im Besitz dessen.
ASM hingegen ist deutlich einfacher als C zu verstehen - es gibt einfach weniger Fallen. Einen Treiber programmieren würde ich damit jedoch warscheinlich nicht. |
|
|
| |
|
|
|
| Besten Dank! Dann vielleicht doch C. Ich schau erst mal nach dem DDK - das bräuchte ich eigentlich nur für NT oder Windows2000. |
|
|
| |
|
|
|
Frank Abbing | Hi.
Ich habe zwar noch nie einen Treiber geschrieben, aber das sollte mit MASM32 ebenso funktionieren wie mit C. Im übrigen sind die C-Libs kompatibel zu MASM32 und können direkt verwendet werden. In diesen beiden Assemblerforen findest du genügend versierte User, die dir mit Infos und Demos helfen werden, wie ein Treiber zu schreiben ist. Vorausgesetzt, du kannst ein wenig Englisch:
[...] [...] |
|
|
| |
|
|
|
| Danke dir, Frank.
Ich habe sogar ganz schwer den Eindruck, daß das was ich vorhabe mit ASM noch wesentlich einfacher und besser geht, als mit C. Zum Start brauche ich auf jeden Fall eine Vorlage für einen Hallo Welt Kernel Treiber in ASM und ein Tutorial für den Einstieg zur Treiberprogrammierung (für C habe ich beides). Wenn ich das auch für ASM finde, ist klar mit welcher Sprache ich weitermache.
Ich möchte nochmal betonen, daß das was ich da vorhabe eigentlich nicht sehr viel anders als das Schreiben einer DLL ist - du wirst mir also sehr gut weiterhelfen können.
Gruß
Andreas |
|
|
| |
|
|
|
Frank Abbing | Natürlich helfe ich dir, sofern ich kann. |
|
|
| |
|
|
|
| Hallo Frank...
Helfen kannst du mir auf jeden Fall - hab ja von ASM überhaupt gar keine Ahnung. Zuerst aber mal eine Bitte: Unter diesem [...] findest du eine Erweiterung für deine ASM Version, die es dir ermöglicht, Treiber zu schreiben. Kannst du vorerst mal installieren?
Was ich vorhabe läuft größtenteils auch im Usermode, benötigt aber einen speziellen API Satz (also keine Gefahr für deine Hardware).
Gruß und besten Dank
Andreas |
|
|
| |
|
|
|
| Habs auch installiert - mal probieren... |
|
|
| |
|
|
|
| So - und was sollte Dein Treiber nun anstellen? |
|
|
| |
|
|
|
Frank Abbing | |
|
| |
|
|
| |
|
- Seite 2 - |
|
|
| [quote:5b3acf3584=iF]So - und was sollte Dein Treiber nun anstellen?[/quote:5b3acf3584] Mein Treiber Nr.1 soll nur einen anderen Treiber anhand dessen Ladeadresse aus dem Kernel schießen - wie der im Prinzip auszusehen hat, weiß ich. Schreiben möchte ich den selbst (will ja was dazulernen), brauche nur evtl. Hilfe beim Lernen von ASM.
Mein Treiber Nr.2 soll eine DLL in den Kernel laden ohne irgendeine Einsprungsadresse auszuführen. Wozu? Mein Gedanke: Wenns klappt, konnte man DLLs nach dem Laden in den Kernel so verändern, das etwas möglich wird, was eigentlich gar nicht möglich ist - nämlich interaktive Treiber zu programmieren. Wie man DLLs auf diese Art in den Kernel schießt, weiß ich in etwa. Daß das im Prinzip möglich sein könnte, habe ich bereits im User Mode ausgetestet - ich habe DLLs ohne das Ausführen der Einsprungsadresse geladen und diese nachher so manipuliert, das die Exportfunktionen ausführbar waren (mit TNT läßt sich das testweise sehr einfach bewerkstelligen).
Beide Treiber werden Bestandteile von Mister Root werden. Und was soll Dein Treiber veranstalten? |
|
|
| |
|
|
|
| [quote:47fe3478ff=Andreas Hötker]Was ich vorhabe läuft größtenteils auch im Usermode, benötigt aber einen speziellen API Satz (also keine Gefahr für deine Hardware). [/quote:47fe3478ff] Das bezieht sich vor allen Dingen auf folgendes: Ich muß dem Treiber irgenwie mitgeben, welches Modul er im Kernel entladen soll. Da ich keine Parameter übergeben kann, schreibe ich die Daten dazu auf die Festplatte bevor ich den Treiber starte. Auslesen kann ich aber nicht mit dem normalen API Satz - der befindet sich ja in der Kernel32 - ich muß dazu die Native-API aus der NTDLL verwenden => deshalb der Download (will hoffen, das die passenden Header dabei sind).
Zum Proggen komme ich frühestens ab Freitag, da ist meine Nachtschicht rum und ich hab einige Stunden Zeit zum Lesen und Ausprobieren. |
|
|
| |
|
|