Zitat:
Er will ja hoffentlich kein Atomkraftwerk damit steuern.
Hey, woher kennt ihr den Verwendungszweck ?
Aber Spaß beiseite, mir ist klar, dass wenn wie Assarbad schreibt, eine falsche Parameterzahl übergeben wird, der Stack dermaßen korrumpiert ist, dass das Programm abraucht oder etwas völlig unvorhersehbares macht, wie das Haustier des Besitzers zu killen.
Das Ganze soll aber in einem eigenen Modul laufen, so daß nicht alles abraucht und nur für Profiuser sein, nicht für den gemeinen Anwender. Es gibt auch noch Tricks, wie man das mit der falschen Parameterzahl, etc. abfängt, das macht z.B. OllyDbg beim "Call
DLL Export".
Nichts desto Trotz ist dies alles ja im Moment gar nicht mein Problem, deshalb habe auf Luckies Vorschlag ja auch einen klassischen dynamischen Aufruf der
DLL Funktion nach Delphi-manier (ohne bösen
asm Code) gepostet.
Mein Problem ist, dass ich verstehen will, wie das Prinzip bei der Windows
API funktioniert (ja ich weiß, dass ist C/C++ und kein Delphi).
Sprich:
Rufe eine Funktion einer
DLL auf mit (ganz einfaches Beispiel) einem Parameter, der ein PChar ist.
Die Aufgerufene Funktion schreibt dir was in den (vorher alloziierten) PChar rein und Du kannst das Ergebnis nutzen.
Wie muss diese
DLL aussehen ?
Das Gegenstück, der Aufrufer funktioniert ja für
WinAPI - Funktionen, wie in den Beispielen.
@Himitsu: Die Adresse der Variablen gebe ich mir aus, weil ich diese dann im .DATA Segment im OllyDbg öffnen kann und so prüfen dass diese korrekt ist. Ich kann den Inhalt an der Stelle ja sogar editieren, so daß mein Programm diesen neuen Inhalt anzeigt.