Hallo
Speziell zur function getrealmodulehandle von der uallcollection hätte ich ein zwei Fragen.
Delphi-Quellcode:
function GetRealModuleHandle(addr: pointer): cardinal;
stdcall;
var h, i: cardinal;
buf:
array[0..255]
of char;
begin
h := cardinal(addr)
and $FFFF0000;
repeat
i := GetModuleFilename(h,buf,255);
dec(h,$10000);
until (i <> 0)
or (h = 0);
if (h = 0)
then
result := 0
else
result := h+$10000;
end;
warum wird hier binär addiert?
cardinal(addr) and $FFFF0000;
und danach $10000 hex abgezogen?
dec(h,$10000);
mir ist ist bei der ganzen funktion einfach nicht klar, wie die den "RealModulHandle" ermittelt?
Auch warum die funktion dann mit ntdll.dll verglichen wird ist mir einfach unverständlich.
Delphi-Quellcode:
if GetRealModuleHandle(addr) <> GetModuleHandle('ntdll.dll') then
result := false;
Hoffe jemand hilft mir bei dem puzzle
.
Arnulf