Autor Beitrag
Don Krawallo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Windows 10 x64
Delphi 10.4.1
BeitragVerfasst: Mi 24.08.11 18:34 
Guten Tag...

Für all diejenigen die's interessiert... Es gibt eine Möglichkeit das man auch über CreateToolHelp... an die Basis Adresse der Main Executable rankommt.
Folgendes beschreibt die Möglichkeit wie man die Basis eines geladenen Moduls bekommt.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Var
  ProcID: Integer;
  FindDLLBase: Boolean;
  SnapMod: THandle;
  ModuleEntry: TModuleEntry32;
  DLLBaseAddy: PByte;
Begin
  SnapMod:= CreateToolhelp32Snapshot(TH32CS_Snapmodule, ProcID);
  ModuleEntry.dwSize := Sizeof(ModuleEntry);
  FindDLLBase:= Module32First (SnapMod, ModuleEntry);
    while FindDLLBase do begin
      if (CompareText(Moduleentry.szModule, 'Game.dll')=0then
        DLLBaseAddy:= ModuleEntry.modBaseAddr;
        FindDLLBase:= Module32Next(SnapMod, ModuleEntry);
      end;
        CloseHandle(SnapMod);
end;


Bei einer EXE Datei funktioniert das mit obigen Beispiel nur in abgewandelter Form. Nämlich so...
ausblenden Delphi-Quelltext
1:
if CompareText(Moduleentry.szModule, 'Game.exe')=0 then					

Nun werden einige sagen - Logisch, da steht ja jetz auch 'Game.exe' anstatt 'Game.dll'. Aber worauf es hierbei ankommt ist der Unterschied zum obigen Sourcecode das hier die 2 Klammern fehlen. Als da wären zum Einen die Klammer Auf vor "CompareText" und zum Anderen die Klammer Zu nach dem "=0". Zum anderen könnte man diese Zeile auch noch mit "lstrcmp/lstrcmpi" realisieren, würde ja genau so gehen.

Was mich jetzt aber mal interessieren würde ist, warum das so ist? Oder vielmehr die Frage - Welche Bedeutung/Funktion haben diese beiden Klammern?

MFG
Don Krawallo
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Mi 24.08.11 20:53 
Diese kann man auch weglassen.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 24.08.11 21:42 
Anders gesagt: Am Verhalten sollten die natürlich nichts ändern. Kannst du das mit Assembler-Auszügen belegen?

_________________
>λ=