Witam.
Mam problem z odczytem mojego pointera.
Kod wygląda tak:
procedure TForm1.Button1Click(Sender: TObject);
var
GameHandle : Cardinal;
BaseAddress : int64;
Address : Int64;
Bytesread: SIZE_T;
puffer : DWORD;
Window : cardinal;
PID : cardinal;
hpptr1:string;
hpptr2:string;
hpptr3:string;
hpptr4:string;
begin
Window := FindWindow(nil,'Okno');
GetWindowThreadProcessId(Window,PID);
GameHandle := OpenProcess(PROCESS_VM_READ,false,PID);
if GameHandle > 0 then
begin
BaseAddress := GetBasePointerOfModule(PID, 'Okno.exe');
Address := BaseAddress + $00579640;
ReadProcessMemory(GameHandle, ptr(Address), @puffer, sizeof(puffer), Bytesread);
hpptr1 := (IntToHex((puffer + $6c), 8));
hpptr2 := (IntToHex((hpptr1 + $7f0), 8));
hpptr3 := (IntToHex((hpptr2 + $b0), 8));
hpptr4 := (IntToHex((hpptr3 + $5e8), 8));
showmessage(('Address: ' + IntToHex((puffer), 8)));
showmessage('Address + pierwszy offset: ' + (hpptr1));
end;
end;
Powiem szczerze, że staram się to robić w celach czysto edukacyjnych. Niestety, ale już tyle czasu nad tym siedzę i się tym bawię, że chyba mi się samemu nie uda.
Czyta mi poprawnie do hpptr1, więc address w showmessage jest poprawny. Reszta (od hpptr2) się powaliła całkowicie.
Proszę o pomoc.
Dziękuję.