Zitat von
The-Fox:
Ich wandle zunächst mal in STring um, weil ich dieses $ brauche.
Nein, brauchst du nicht!
Zitat von
The-Fox:
Wenn ich einfach so einen Integer übergebe, dann bringt er ja einen Fehler bei z.B. FF.
Dann machst du was falsch ...
So, ich hab nen bissl gecoded:
Delphi-Quellcode:
function ReadMem(c_addr : Cardinal; h_phandle : THandle) : integer;
var
c_bytesread : Cardinal;
begin
if not(ReadProcessMemory(h_phandle, Pointer(c_addr), @Result, SizeOf(Result), c_bytesread) and (c_bytesread = SizeOf(Result)))then
ShowMessage('ReadProcessMemory Fehler bei $' + IntToHex(c_addr, 8));
end;
procedure ka(c_start, c_end : Cardinal; str_wname : string);
var
h_whandle : THandle;
c_PID : Cardinal;
h_phandle : THandle;
c_raddr : Cardinal;
begin
h_whandle := FindWindow(nil, PChar(str_wname));
if(h_whandle = 0)then
begin
ShowMessage('FindWindow Fehler, Fenstername: ' + str_wname);
Exit;
end;
GetWindowThreadProcessId(h_whandle, @c_PID);
h_phandle := OpenProcess(PROCESS_ALL_ACCESS, false, c_PID);
if(h_phandle = 0)then
begin
ShowMessage('OpenProcess Fehler, PID: ' + IntToStr(c_PID));
Exit;
end;
c_raddr := c_start;
while(c_raddr <= c_end)do
begin
ShowMessage('$' + IntToHex(ReadMem(c_raddr, h_phandle), 8));
Inc(c_raddr, SizeOf(integer));
end;
CloseHandle(h_phandle);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ka($00010000, $07FFFFFF, 'MineSweeper');
end;
Das sollte funktionieren, allerdings ist zu beachten, dass die wenigsten Prozesse den gesamten adressraum von $00010000 - $07FFFFFF haben, genau gesagt, weis ich nicht besonders viel darüber.
(Informier dich dazu mal über VirtualQueryEx)
Die Frage die sich mir stellt, ist, warum machst du das? Hinterher kommt ja eh nur Blau raus ... außerdem ist das relativ sinnlos, wenn du nicht weist, nach was du wo suchst ... naja ... aber das is ja deine sache ...
Vielleicht hilft dir ja ein Spieletrainer weiter ... such mal nach "Generic Game Trainer" hier im Forum, ich hab dessen Quellcode schon mind. 1x gepostet ...
ciao, Philipp