vielleicht helfen dir die funktionen weiter:
Delphi-Quellcode:
function GetModuleVirtualSize(dllh: integer): integer; stdcall;
var IDH: PImageDosHeader;
INH: PImageNtHeaders;
begin
result := 0;
IDH := pointer(dllh);
if IDH^.e_magic = IMAGE_DOS_SIGNATURE then
begin
INH := pointer(dllh+integer(IDH^._lfanew));
if INH^.Signature = IMAGE_NT_SIGNATURE then
result := INH^.OptionalHeader.SizeOfImage;
end;
end;
function GetModuleOffset(dlln, processname: string): integer; stdcall; overload;
begin
result := GetModuleOffset(dlln,FindProcess(processname));
end;
function GetModuleOffset(dlln: string; pid: integer): integer; stdcall; overload;
var FSnapshotHandle: THandle;
FModuleEntry32: TModuleEntry32;
ContinueLoop: BOOL;
begin
result := 0;
if (pid <> 0) then
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pid);
FModuleEntry32.dwSize := Sizeof(FModuleEntry32);
ContinueLoop := Module32First(FSnapshotHandle,FModuleEntry32);
while ContinueLoop do
begin
if pos(uppercase(dlln),uppercase(FModuleEntry32.szModule)) > 0 then
result := FModuleEntry32.hModule;
ContinueLoop := Module32Next(FSnapshotHandle,FModuleEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
end;
für die mittlere brauchste die uallProcess
unit
kommt auch alles in das nächste update rein
um das nu für einen anderne process zu machen mussu halt den header $1000 bytes von dme prozess einfach bei dir reinladen und dann GetModuleSize darauf aufrufen dann weißte wie groß die
dll ist danach kannste die ganz kopieren und vergleichen
beim vergleichen aber nur die sections nehmen die nicht writable sind
ausserdem muss der virtualsize von deiner opengl32 geladenen
dll mit der von dem spiel übereinstimmen
kannst ja mal bischen testen