Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Laden einer DLL erkennen (https://www.delphipraxis.net/49173-laden-einer-dll-erkennen.html)

c113plpbr 6. Jul 2005 15:10


Laden einer DLL erkennen
 
Hi DP'ler,

ich suche für folgendes Problem eine Lösung:
Eine (fremde) DLL wird in den Speicher (m)eines Programms geladen, allerdings nicht direkt über LoadLibrary, sondern eher indirekt über SetWindowsHookEx. Mein Problem dabei ist, dass ich dies erkennen möchte.
Bei LoadLibrary wäre es relativ einfach, da würde ich es über die DllMain-Funktion & DLL_THREAD_ATTACH erfahren, aber bei SetWindowsHookEx wird diese Funktion (warum auch immer) einfach nicht aufgerufen (ich bekomme aber dennoch DLL_THREAD_ATTACH-Nachrichten über die DllMain, bei über LoadLibrary geladenen DLLs).
Daher suche ich nach alternativen, um dies zu erkennen. Fällt jemandem von euch eine ein?

Eine Methode wäre natürlich in bestimmten Zeitabständen zu prüfen, ob die DLL geladen wurde, allerdings wäre diese Lösung des Problems sehr "unsauber" ...

ciao, Philipp

barf00s 6. Jul 2005 16:22

Re: Laden einer DLL erkennen
 
SetWindowsHookEx lädt keine Dlls in den Prozessraum eines Programms/Prozesses, das macht alles diese LoadLibrary ...................
aber eventuell hilft dir da die madCollection ( www.madshi.net ) und desses Forum - Ziel also, die LoadLibrary funktion zu hooken...

c113plpbr 6. Jul 2005 16:36

Re: Laden einer DLL erkennen
 
Zitat:

Zitat von barf00s
SetWindowsHookEx lädt keine Dlls in den Prozessraum eines Programms/Prozesses, das macht alles diese LoadLibrary

Denkste, die DLL's werden sehr wohl in den "Prozessraum" geladen!
Zitat:

Zitat von barf00s
aber eventuell hilft dir da die madCollection ( www.madshi.net ) und desses Forum - Ziel also, die LoadLibrary funktion zu hooken...

Nope, weder LoadLibraryA noch LoadLibraryW wird aufgerufen, glaub mir. Und wenn es aufgerufen werden würde, würde ich ja meine Messages bekommen ...

SetWindowsHookEx scheint eine (oder ein paar) Ebenen unter LoadLibrary zu arbeiten ...

ciao, Philipp

Win32.API 6. Jul 2005 16:40

Re: Laden einer DLL erkennen
 
Hi,
kann es sein das SetWindowsHokEx WriteProcessMemory benutzt?
Versuch doch mal das zu hooken vieleicht gehts ja.

Win32.API

c113plpbr 6. Jul 2005 16:59

Re: Laden einer DLL erkennen
 
Ok, ich hab die Lösung gefunden (dank Assarbad):
SetWindowsHookEx ruft die Funktion LdrLoadDll der ntdll.dll auf. Ein (API-) Hook auf diese Funktion sollte das Problem lösen.

Trotzdem danke, an alle ;)

ciao, Philipp

Olli 6. Jul 2005 17:15

Re: Laden einer DLL erkennen
 
Achtung:
  1. Funzt das nicht auf 9x - das kennt nämlich kein LdrLoadDll()
  2. Mußt du jeweils überprüfen, welche API benutzt wird, denn seit XP hat die Funktion glaube ich Geschwisterchen bekommen ;)


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