Ein Integer an Adresse $00400000
im eigenen virtuellen Speicherraum (nur in der selben Exe) auslesen und ausgeben.
ShowMessage(IntToStr(Pinteger($00400000)^));
Den Wert $12122323 im Prozess mit der PID (1012) im Addressbereich von $00401000 bis $00401200 absuchen und die Addresse, des Wertes, wenn gefunden, ausgeben.
Delphi-Quellcode:
function FindValueInProcess(hProcess: THandle; Value: DWORD; Offset, SearchLen: DWORD): Pointer;
var
i: Integer;
buffer: DWORD;
written: DWORD;
begin
result := nil;
For i := Offset To OffSet+SearchLen Do
begin
If ReadProcessMemory(hprocess,Pointer(i),@buffer,4,written) and
(buffer = Value) Then
begin
result := Pointer(i);
Break;
end;
end;
end;
Anwendung:
var
hprocess: Thandle;
address: Pointer;
begin
hProcess := OpenProcess(PROCESS_VM_READ,False,1012);
address := FindValueInProcess(hProcess,$12122323,$00401000,$200);
CloseHandle(hProcess);
If address <> nil Then
ShowMessage(Format('Value found at address %x',[DWORD(address)]));
end;