Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Problem bei dynamischem Aufruf einer DLL mit Übergabe von Pointern ala Win32API (https://www.delphipraxis.net/159102-problem-bei-dynamischem-aufruf-einer-dll-mit-uebergabe-von-pointern-ala-win32api.html)

eric_draven 15. Mär 2011 07:55

AW: Problem bei dynamischem Aufruf einer DLL mit Übergabe von Pointern ala Win32API
 
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.

eric_draven 15. Mär 2011 10:46

AW: Problem bei dynamischem Aufruf einer DLL mit Übergabe von Pointern ala Win32API
 
ok, habs gelöst, wenn man den Pointer als <Var> übergibt, stimmt die Adresse überein. Nun kann ich auch mit WriteProcessMemory auf diese schreiben (was natürlich Banane ist, da ich ohnehin schon den Pointer habe). Aber warum leckt sich der Rüde seine Eier ? - Weil er's kann :lol:
Danke für Eure Hilfe !


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr.
Seite 2 von 2     12   

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