Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Aus DLL die zugreifende Anwendung ermitteln (https://www.delphipraxis.net/58036-aus-dll-die-zugreifende-anwendung-ermitteln.html)

djl 30. Nov 2005 13:08


Aus DLL die zugreifende Anwendung ermitteln
 
Hallo,

da ich zum ersten mal bei meiner Suche erfolglos geblieben bin :cry: , stelle ich mal eine Frage:

Ich habe eine DLL und möchte zur Laufzeit herausfinden, welche Anwendung auf meine DLL zugreift.
Dazu benötige ich im Grunde den Namen der EXE-Datei mit exaktem Pfad.

Hat vielleicht jemand einen Tipp ob und wenn ja wie ich aus der DLL heraus an diesen Pfad ran komme :?:


(Hintergrund: Ich möchte die zugreifenden Anwendungen möglichst eindeutig identifizieren (so etwas wie ein 128bit-Hash-Wert der EXE-Datei dürfte reichen) um zu erkennen, wenn andere Anwendungen diese DLL nutzen. Dazu benötige ich die Daten der zugreifenden Anwendung! )

Scho ma Danke!!!

Gruß
djl

Vjay 30. Nov 2005 13:12

Re: Aus DLL die zugreifende Anwendung ermitteln
 
Nutzt du die VCL, schonmal paramStr(0) probiert?

MarcoWarm 30. Nov 2005 13:13

Re: Aus DLL die zugreifende Anwendung ermitteln
 
Da Du die DLL ja selber schreibst, lass dir einfach als Parameter einer Funktion das Handle der aufrufenden Application übergeben... Dann hast du, was du willst.

chaosben 30. Nov 2005 13:13

Re: Aus DLL die zugreifende Anwendung ermitteln
 
Du könntest über die Liste der laufenden Prozesse gehen und dir pro Prozess die geladenen Module suchen und darin deine DLL suchen. Dadurch bekommst du so ziemlich alle Infos über die Anwendung. Ist zwar ein wenig "hintenrum", aber im Moment der einzige Weg, der mir einfällt.

Robert Marquardt 30. Nov 2005 13:16

Re: Aus DLL die zugreifende Anwendung ermitteln
 
GetModuleFileName duerfte die gesuchte Funktion sein. Wenn man sie mit dem Instance-Handle der DLL aufruft,
bekommt man den Pfadnamen der DLL und wenn man 0 benutzt den Pfadnamen des aufrufenden Programms.

Ein bischen unsinnig ist es aber doch wenn man die DLL nur in genau einem Programm benutzen will. Da kann man doch den Code gleich ins Programm einfuegen.

djl 30. Nov 2005 13:44

Re: Aus DLL die zugreifende Anwendung ermitteln
 
@Vjay: funktioniert, Danke! Weißt du evtl. wie leicht man diesen Parameter manipulieren kann? Woher kommen diese Informationen?

Hätte ich noch erwähnen sollen: Die gesuchte Information soll einigermaßen schwer zu manipulieren sein, deshlab scheidet auch aus, das man das Handle selbst übergibt!
Da ich nur eine Instanz der DLL zulasse ist es evtl. am einfachsten die laufenden Prozesse zu untersuchen und so die Anwendung herauszufischen ?!?

@Robert: Es soll schon möglich sein die DLL aus verschiedenen Programmen aufzurufen, ich möchte das nur mitbekommen um evtl. manipulationen mit dieser DLL zu protokollieren!

Danke an alle für die schnellen Antworten!!!

sakura 30. Nov 2005 13:48

Re: Aus DLL die zugreifende Anwendung ermitteln
 
Zitat:

Zitat von djl
@Vjay: funktioniert, Danke! Weißt du evtl. wie leicht man diesen Parameter manipulieren kann? Woher kommen diese Informationen?

Der Parameter wird direkt durch Windows gesteuert, wenn auch nicht unmöglich, so ist eine Manipulation iA sehr unwahrscheinlich.

...:cat:...

brechi 30. Nov 2005 13:52

Re: Aus DLL die zugreifende Anwendung ermitteln
 
Paramstr benutzt GetCommandLine von der kernel32.dll
durch einen API hook kann man das natürlich leicht faken
vielleicht solltest besser ne checksumme von dem prozes, bzw bestimmten sections machen?

djl 30. Nov 2005 14:06

Re: Aus DLL die zugreifende Anwendung ermitteln
 
Checksumme von einem Prozess, den ich nicht selbst programmiert habe dürfte schwierig werden, da ich dann nicht weiss wo variable anteile stehen!

Ein API-Hook ist immerhin schon mal eine gewisse Hürde, aber die Idee die laufenden Prozesse zu untersuchen gefällt mir immer besser, werde mich mal daran versuchen!

Vjay 1. Dez 2005 15:18

Re: Aus DLL die zugreifende Anwendung ermitteln
 
Sämtliche Möglichkeiten, die er verwenden würde um den Pfad herauszubekommen, würden sich durch einen API-Hook manipulieren lassen.
Schließlich kann er als Programmierer auch nur Anfragen an das OS stellen. Evtl. wäre eine Kombination der drei hier aufgeführten Möglichkeiten noch eine grössere Hürde, die ein ein findiger Cracker aber eh in 5 Min umgangen hätte.
Daher Sinnlos sich da einen zu grossen Kopf drum zu machen @brechi.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 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