AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wert einer Adresse im RAM auslesen/verändern
Thema durchsuchen
Ansicht
Themen-Optionen

Wert einer Adresse im RAM auslesen/verändern

Ein Thema von godlike · begonnen am 22. Sep 2007 · letzter Beitrag vom 23. Sep 2007
Antwort Antwort
godlike

Registriert seit: 11. Feb 2007
12 Beiträge
 
#1

Wert einer Adresse im RAM auslesen/verändern

  Alt 22. Sep 2007, 20:50
Hallo Leute!

Ich möchte gerne wissen ob es möglich ist mit Delphi aus einer bestimmten RAM-Speicheradresse (z.B. 9EA1D0) den Wert auszulesen und diesen auch zu ändern? Falls ja, wie ist dies möglich? Irgendwie mit Pointern? Wäre sehr verbunden, wenn eine etwas einfachere/detailiertere Antwort käme, da für mich dieses Gebiet relativ neu ist (z.B. ein Beispiel).

Auslesen sollte ja bestimmt gehen, das machen ja jenste Programme... Und verändern muss ja auch irgendwie möglich sein ...

Ich hoffe ihr könnt mir helfen.

(Sorry falls die Antwort auf diese Fragen schon irgendwo steht, aber ich war mir nicht sicher unter welchen Stichworten ich suchen soll..)

Danke für eure Antworten.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#2

Re: Wert einer Adresse im RAM auslesen/verändern

  Alt 22. Sep 2007, 21:09
Hallo,

Zitat von goldlike:
Ich möchte gerne wissen ob es möglich ist mit Delphi aus einer bestimmten RAM-Speicheradresse (z.B. 9EA1D0) den Wert auszulesen und diesen auch zu ändern?
Ja, ist es.

Zitat von goldlike:
Auslesen sollte ja bestimmt gehen, das machen ja jenste Programme... Und verändern muss ja auch irgendwie möglich sein ...
das machen auch 'jenste' Programme - und die schimpfen sich gelegentlich 'Trainer' und werden dazu benutzt, Spielstände etc. zu manipulieren. Und genau danach solltest Du hier im Forum mal suchen.
  Mit Zitat antworten Zitat
godlike

Registriert seit: 11. Feb 2007
12 Beiträge
 
#3

Re: Wert einer Adresse im RAM auslesen/verändern

  Alt 22. Sep 2007, 23:27
Hallo nochmals.

Danke für die Antwort, ich habe nun mal den Code vom hier veröffentlichten Trainer für NFSU2 angeschaut und die Routinen ausprobiert...

Also, Ausgangslage:

Ich habe ein Form mit 2 Edits und 2 Buttons.

Wenn ich auf Button1 klicke, will ich, dass der Wert der Adresse 9EA1D0 gelesen und in Edit1.Text geschrieben wird.

Meine Funktion:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lRead, lHandle: Cardinal;
  lBuf: PChar;
begin
  if fRunning then
  begin
    lBuf := '';
    lHandle := FindWindow('TForm1',fAppName);
    GetWindowThreadProcessId(lHandle,@lHandle);
    lHandle := OpenProcess(PROCESS_ALL_ACCESS,False,lHandle);
    ReadProcessMemory(lHandle,Ptr($9EA1D0),lBuf,1,lRead);
    Edit1.Text := lBuf;
    CloseHandle(lHandle);
  end;
end;
Und das zweite:

Ich will dass der (Zahlen-)Wert, welcher in Edit2.Text steht, in diese Adresse geschrieben wird, wenn ich auf Button2 klicke.

Meine Funktion:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  lWrite, lHandle: Cardinal;
  lBuf: Pointer;
begin
  if fRunning then
  begin
    if trim(Edit2.Text) <> 'then
    begin
      lBuf := Pointer(StrToInt(Edit2.Text)); // hier schreibt er mir immer HexWerte in lBuf
      lHandle := FindWindow('TForm1',fAppName);
      GetWindowThreadProcessId(lHandle,@lHandle); //Get ProcessID and ignore ThreadID
      lHandle := OpenProcess(PROCESS_ALL_ACCESS,False,lHandle); //Get ProcessHandle
      WriteProcessMemory(lHandle,Ptr($9EA1D0),lBuf,4,lWrite); // ich denke mal 4 weil Integer = 4 Bytes ?
      CloseHandle(lHandle);
    end;
  end;
end;
Ich habe jetzt jenste Dinge rumprobiert und bin immer auf recht verwirrende Resultate gestossen... Ich frage mich nun, was genau mache ich falsch? Kann mir jemand bitte helfen? Würde das gerne heute noch fertig kriegen. \:
  Mit Zitat antworten Zitat
godlike

Registriert seit: 11. Feb 2007
12 Beiträge
 
#4

Re: Wert einer Adresse im RAM auslesen/verändern

  Alt 23. Sep 2007, 01:43
Verdammte Kacke... sorry für den Ausdruck. q:
Aber den Fehler (immerhin beim Schreiben) habe ich jetzt gefunden ... naja, muss noch schauen ob das Lesen nun auch geht.

\\€dit:

Ja, es läuft jetzt... habe die Pointer falsch angewendet ...
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz