Oh das ist mal echt informativ
.
damit ist das mal klar:
Delphi-Quellcode:
if GetRealModuleHandle(addr) <> GetModuleHandle('ntdll.dll') then
result := false;
@nicoDE
was meinst du mit RVA? vielleicht verstehe ich dann den ganzen satz
hoff ich.
Mit forwarder string meinst du, daß die function nicht in der .dll liegt die sie exportiert hoff ich ..?
Bitte nicht für blöd halten, aber das ist alles neu für mich und es sickert alles nur langsam in mein hirn.
Das ganze ist also nur ein spezialfall check?
die source ist ja eigentlich so:
Delphi-Quellcode:
if (integer(addr) < moduleh) or (integer(addr) > moduleh+integer(INH^.OptionalHeader.SizeOfImage)) then
if GetRealModuleHandle(addr) <> GetModuleHandle('ntdll.dll') then
result := false;
hier wird überprüft ob die import adresse im bereich des moduls liegt wenn nicht wird mit getrealmodulehandle nach dem eigentlichen modul gesucht und nochmal überprüft ob nicht dieser spezialfall mit ntdll.dll zutrifft.
jetzt will ichs aber genau wissen.
Zitat:
da die Module nur an Adressen geladen werden, die ein Vielfaches von $10000 sind.
das heißt windows verwaltet die module so, daß sie immer oberhalb von hex 10000 liegen.
Wie schaft es windows dann von meiner function dann mit getmodulefilename den functionsnamen zu bekommen?
genügt der
api einfach nur eine adresse die im adressbereich der function liegt um den namen des moduls zurück zu liefern?
und warum gibt es ein
dec hex 10000 als suchfunktion?
dec(h,$10000);
Danke auf jeden Fall mal - jetzt ist mir der Sinn der function mal verständlich
Arnulf