AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi DLL innerhalb eines Prozesses verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

DLL innerhalb eines Prozesses verwenden

Ein Thema von hedie · begonnen am 11. Okt 2008 · letzter Beitrag vom 14. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#1

DLL innerhalb eines Prozesses verwenden

  Alt 11. Okt 2008, 22:55
Hallo

Ich möchte auf die Proceduren einer DLL zugreifen welche in einem bestimmten Prozess geladen ist.

Wie kann ich dies realisieren?


Danke schonmal
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
DelphiKlaus

Registriert seit: 18. Okt 2006
100 Beiträge
 
Delphi 6 Professional
 
#2

Re: DLL innerhalb eines Prozesses verwenden

  Alt 12. Okt 2008, 09:17
Hey,

es ist doch egal, ob die DLL schon in einem anderen Prozess geladen ist oder nicht. Du lädst sie einfach in Deinen Prozess und kannst auf die Prozeduren zugreifen.

MfG

Klaus
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: DLL innerhalb eines Prozesses verwenden

  Alt 12. Okt 2008, 09:18
@DelphiKlaus: nicht ganz. Wenn der andere Prozess die DLL mit bestimmten Funktionsaufrufen initialisiert hat deren Wert eman nicht kennt funktioniert es nicht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#4

Re: DLL innerhalb eines Prozesses verwenden

  Alt 12. Okt 2008, 10:41
Genau um solche init werte....

Wie kann ich den nun auf die Funktionen einer in einem anderen Prozess geladenen DLL zugreifen?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: DLL innerhalb eines Prozesses verwenden

  Alt 12. Okt 2008, 18:16
Am einfachsten ist es wohl, eine weitere DLL in den fremden Prozess zu injizieren, die dann aufgefordert wird, bestimmte Funktionen aufzurufen und ihre Ergebnisse zurücktransferiert.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#6

Re: DLL innerhalb eines Prozesses verwenden

  Alt 13. Okt 2008, 00:32
Zitat von Apollonius:
die dann aufgefordert wird
Wie fordere ich den diese diese Dinge an?

Das ist ja mein problem.... Wie kommuniziere ich mit der DLL?

Wie rufe ich Funktionen aus ihr auf?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: DLL innerhalb eines Prozesses verwenden

  Alt 13. Okt 2008, 00:35
Der injizierte Code muss sich mit MSDN-Library durchsuchenGetProcAddress die Adressen der geladenen unktion holen und kann sie dann aufrufen. Allerdings musst du für GetProcAddress das Handle vom Prozess nutzen mit dem der Prozess die DLL gelden hat. Wie du allerdings an das Handle dran kommst, weiß ich auch nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#8

Re: DLL innerhalb eines Prozesses verwenden

  Alt 13. Okt 2008, 00:40
Also brauch ich das handle des Prozesses indem die DLL geladen ist?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: DLL innerhalb eines Prozesses verwenden

  Alt 13. Okt 2008, 11:07
Deine DLL kann die Funktionen der fremden DLL ganz normal importieren (statisch oder dynamisch). Um Anforderungen entgegenzunehmen kannst du einen beliebigen IPC-Mechanismus verwenden. Dazu solltest du in der Hauptroutine der DLL (begin..end.) einen neuen Thread erzeugen, der dann als IPC-Server fungiert: Fensternachrichten entgegennehmen, an der Pipe lauschen... Aus diesem Thread kannst du dann die importierten Funktionen aufrufen.

Diese DLL musst du dann in den fremden Prozess injizieren. Dazu kannst du den normalen Weg mit CreateRemoteThread und LoadLibrary gehen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#10

Re: DLL innerhalb eines Prozesses verwenden

  Alt 13. Okt 2008, 12:37
Zitat von Luckie:
Der injizierte Code muss sich mit MSDN-Library durchsuchenGetProcAddress die Adressen der geladenen unktion holen und kann sie dann aufrufen. Allerdings musst du für GetProcAddress das Handle vom Prozess nutzen mit dem der Prozess die DLL gelden hat. Wie du allerdings an das Handle dran kommst, weiß ich auch nicht.
Der injezierte Code kann sich normal mit GetModuleHandle das Handle eines Modules (z.B. kernel32.dll). Mit einem Prozesshandle muss nichts gemacht werden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.
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