Im Prinzip (egal ob EXE oder
DLL):
man hole sich einen Pointer innerhalb des gewünschten Moduls
z.B. die Adresse einer Funktion (vorzugsweise der Funktion, worin man das grad abfragt)
oder die Adresses eines Labels (siehe
GOTO)
Delphi-Quellcode:
P := @FunctionsName;
// oder
label Test;
begin
Test:
P := @Test;
dann frage man mit VirtualQuery nach nach der Base-Adresse des Speicherblocks
(in diesem Fall der Anfangsadresse der FileImages, worin der gefundene Pointer liegt)
diese BaseAdress entspricht zufällig dem
Handle der
DLL/EXE
und nun einfach nur noch
GetModuleName mit diesem
Handle(Adresse)