AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ReadProcessmemory-Schleife funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

ReadProcessmemory-Schleife funktioniert nicht

Ein Thema von Karlson · begonnen am 6. Feb 2005 · letzter Beitrag vom 8. Feb 2005
 
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#4

Re: ReadProcessmemory-Schleife funktioniert nicht

  Alt 7. Feb 2005, 15:30
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
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz