Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Handle einer geladenen DLL in einem anderen Process finden (https://www.delphipraxis.net/26549-handle-einer-geladenen-dll-einem-anderen-process-finden.html)

Reddog 25. Jul 2004 02:54


Handle einer geladenen DLL in einem anderen Process finden
 
Hallo,

ich habe hier ein recht verzwicktes Problemm. Wie der Titel schon sagt, möchte ich das Handle einer geladenen DLL auslesen. Die DLL wurde aber nicht vom Programm selbst, sondern von einem anderen Process geladen. Deswegen krieg ich mit GetModuleHandle das Handle nicht, da diese Funktion anscheinend nur den eigenen Process durchsucht. Und mit LoadLibrary ruft es, glaub ich, die DLL einfach neu auf, so dass ich keinen Einfluss auf den anderen Process nehmen kann.

Also, wenn mir jemand weiter helfen könnte, ich wäre sehr froh.

Reddog.

Luckie 25. Jul 2004 03:02

Re: Handle einer geladenen DLL in einem anderen Process find
 
Kuck dir mal meine SysInfo an, da habe ich Code drin der alle im System geladenen Module auflistet, auch die anderer Processe.

Reddog 25. Jul 2004 20:52

Re: Handle einer geladenen DLL in einem anderen Process find
 
Hmm das SysInfo kann ich irgendwie nicht runterladen.
Ist die Adresse: http://www.luckie-online.de/cgi-bin/...sysinfosfx.exe richtig?
Oder hab ich da was falsch verstanden?

Reddog.

EDIT: OK hab's jetzt von: http://www.luckie-online.de/Downloads/SysInfo3_2.zip

kiar 25. Jul 2004 21:00

Re: Handle einer geladenen DLL in einem anderen Process find
 
http://www.luckie-online.de/Downloads/

hier und ziemlich weit unten

Reddog 26. Jul 2004 00:03

Re: Handle einer geladenen DLL in einem anderen Process find
 
Hmm,

danke schon mal an Luckie, ich kann jetzt ein Handle der gewünschten DLL finden. Allerdings ist es ja nur innerhalb des aufrufenden Process gültig. Kann man aus diesem Handle jetzt irgendwie auf die globale Adresse schließen? Ansonsten nützt ja das Handle praktisch nichts. :(

Reddog.

Luckie 26. Jul 2004 00:28

Re: Handle einer geladenen DLL in einem anderen Process find
 
Wozu brauchst du denn das Handle überhaupt?

Reddog 26. Jul 2004 00:50

Re: Handle einer geladenen DLL in einem anderen Process find
 
Hätt ich vielleicht gleich schreiben sollen :wink:

Also eigentlich war das so gedacht:

Ich hab son kleines Spiel was diese DLL lädt. Ich möchte jetzt eine Funktion innerhalb dieser DLL benutzen. Von der Funktion weiß ich allerdings nur, an welcher Stelle relativ zum Anfang des DLL-Codes sie sich befindet(Naja und die Parameter, die sie erwartet). Jetzt hab ich mir gedacht ich könnte das Handle der DLL als die Adresse im Speicher benutzen und die Funktion direkt an der Stelle ansprechen. Wenn ich die DLL selbst lade, dann scheint die Methode auch ganz gut zu klappen (die Funktion die sonst das Spiel schließen soll, schließt dann mein Prog :D). Naja aber ich möchte ja das Spiel beeinflussen, deswegen müsste ich die vom Spiel geladene DLL ansprechen, oder?

Er könnte jetzt sein, dass das überhaupt keinen Sinn ergibt, weil ich mich mit sowas leider schlecht auskenne. Fällt dir dazu etwas ein?

Luckie 26. Jul 2004 01:19

Re: Handle einer geladenen DLL in einem anderen Process find
 
moment telefon

Luckie 26. Jul 2004 02:00

Re: Handle einer geladenen DLL in einem anderen Process find
 
Du willst also das fenster des Spieles schließen? Dann hol dir mit Hier im Forum suchenFindWindow das handle und schick mit Hier im Forum suchenSendMessage ein Hier im Forum suchenWM_CLOSE an das Fenster.

Reddog 26. Jul 2004 02:11

Re: Handle einer geladenen DLL in einem anderen Process find
 
Leider ist es nicht so einfach,

es war lediglich ein Beispiel, weil es einfach war das anhand dieser einen Funktion zu testen. Die DLL speichert bestimmte Variablen und beinhaltet einige Functionen, die im Spiel zum Einsatz kommen. Ich wollte eben diese von meinem Programm aus benutzen. Die sind aber in einem anderen Process, deswegen kann ich, obwohl ich den Entry Point dieser Functionen kenn, trotzdem nicht auf sie zugreiffen. Ich weiß aber nicht ob's überhaupt geht von meinem Programm aus auf den Speicher von dem anderen Programm zuzugreiffen.

Es geht bestimmt auch, wenn man bei dem Spiel eine DLL einschleust, aber das müsste man ja mit Assembler-Code machen (:( Dazu müsste ich mich ja wieder mit Assembler beschäftigen).

Ich hoffe das Problem ist klar geworden. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.
Seite 1 von 4  1 23     Letzte »    

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