![]() |
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. |
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.
|
Re: Handle einer geladenen DLL in einem anderen Process find
Hmm das SysInfo kann ich irgendwie nicht runterladen.
Ist die Adresse: ![]() Oder hab ich da was falsch verstanden? Reddog. EDIT: OK hab's jetzt von: ![]() |
Re: Handle einer geladenen DLL in einem anderen Process find
|
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. |
Re: Handle einer geladenen DLL in einem anderen Process find
Wozu brauchst du denn das Handle überhaupt?
|
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? |
Re: Handle einer geladenen DLL in einem anderen Process find
moment telefon
|
Re: Handle einer geladenen DLL in einem anderen Process find
Du willst also das fenster des Spieles schließen? Dann hol dir mit
![]() ![]() ![]() |
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. |
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