[Delphi] BaseAdresse der Client.dll

04/29/2011 18:27 krustx#1
hey ho, ich versuche momentan die Basisadresse des Hl2.exe Prozess auszulesen. In .Net war das recht einfach, in Delphi bekomme ich das leider nicht hin. Könnte mir jemand bei dem problem helfen ? eventuell einen Tipp geben ?
04/29/2011 20:04 krustx#2
habe das peroblem gelöst, habe folgende Funktion gefunden:
Code:
function GetModuleBase(hProcID: Cardinal; lpModName: PChar):Cardinal;
var
  hSnap: Cardinal;
  tm: TModuleEntry32;
begin
  result := 0;
  hSnap := CreateToolHelp32Snapshot(TH32CS_SNAPMODULE, hProcID);
  if hSnap <> 0 then
  begin
    tm.dwSize := sizeof(TModuleEntry32);
    if Module32First(hSnap, tm) = true then
    begin
      while Module32Next(hSnap, tm) = true do
      begin
        if lstrcmpi(tm.szModule, lpModName) = 0 then
        begin
          result := Cardinal(tm.modBaseAddr);
          break;
        end;
      end;
    end;
    CloseHandle(hSnap);
  end;
end;
sollte selbst erklärend sein, alle module des prozesses werden durlaufen und mit dem angegebenen modulnamen verglichen. bei einem treffer wurd die baseaddress des modules als rückgabewert definiert.