![]() |
[Erledigt] Speicheradresse (immer gleich) auslesen
Hallo
Ich hab mal wieder ne Frage.^^ Also ich möchte für ein Spiel ein Tool schreiben. (eher ein Analysierer) Ich möchte die Daten aus dem RAM holen. Die Adressen weiß ich schon.(Bsp.:599CD8) Ich weiß jetzt nur nicht wie ich die Werte aus dem RAM bekomme. Da die Adressen immer gleich sind, brauch ich keine Funktion/Prozedur in der auch noch anderes beachtet wird. Am besten wär, Adresse eingeben und Wert bekommen. Ich hoffe ihr versteht mich und könnt mir helfen.^^ |
Re: Speicheradresse (immer gleich) auslesen
Na das mit "Adresse immer gleich" möchte ich stark bezweifeln. Ausserdem sollte Dir Windows ein paar auf die Finger geben wenn Du in Speicherbereichen herum fuhrwerkst, die nicht Deinem Programm gehören.
Wenn Du einem Pointer die bekante Adresse mitteilst hast Du natürlich Zugriff auf den Speicher auf den der Pointer zeigt. Aber ob das geht? Gruß K-H |
Re: Speicheradresse (immer gleich) auslesen
Das sollte mit OpenProcess() gehen. Allerdings würde ich auch nicht davon ausgehen, dass die Adresse wirklich immer gleich ist...
Edit: Vielleicht hilf das hier weiter: ![]() HTH |
Re: Speicheradresse (immer gleich) auslesen
Such mal nach ReadProcessMemory hier im Forum.
|
Re: Speicheradresse (immer gleich) auslesen
Das ist ein bisschen kniffelig. Unter NT kann jedes Programm nur noch auf seinen eigenen, virtuellen Adressraum zugreifen. Du müsstest mit
![]() ![]() Such am besten mal nach den genannten Funktionen, dazu gab's schon des öfteren Threads hier im Forum. [edit]Öhm joa... oder einfach mit ReadProcessMemory... aber warum einfach wenn's auch umständlich geht :wall: [/edit] |
Re: Speicheradresse (immer gleich) auslesen
Erstmal danke für die Antworten.
Könnte mir jemand vllt ein Beispiel für ReadProcessMemory geben. Danke |
Re: Speicheradresse (immer gleich) auslesen
Zitat:
![]() |
Re: Speicheradresse (immer gleich) auslesen
Zitat:
Das Problem ist nur das dort in den Speicher geschrieben wird. Ich will aber nur auslesen. |
Re: Speicheradresse (immer gleich) auslesen
Habs jetzt so gemacht:
Delphi-Quellcode:
Nur bekomm ich in Edit1.Text unverständliche Zeichen.
var
lBuf: PChar; lRead,c : Cardinal; begin c:=FindWindow(nil,'sag ich net'); //Get WindowHandle if c=0 then begin MessageDlg('...erst spiel starten...dann trainer starten =)',mtwarning,[mbOK],0); Exit; end; GetWindowThreadProcessId(c,@c); //Get ProcessID and ignore ThreadID c:=OpenProcess(PROCESS_ALL_ACCESS,False,c); //Get ProcessHandle ReadProcessMemory(c,Ptr($599CD8),lBuf,1,lRead); Edit1.Text := lBuf; CloseHandle(c); |
Re: Speicheradresse (immer gleich) auslesen
Sicher, dass an der Stelle ein lesbares Zeichen steht?
Abgesehen davon, würde ich es mal so probieren, bin aber nicht sicher, ob es einen Unterschied macht:
Delphi-Quellcode:
var
lBuf: string; lRead,c : Cardinal; begin c:=FindWindow(nil, 'sag ich net'); //Get WindowHandle if c=0 then begin MessageDlg('...erst spiel starten...dann trainer starten =)',mtwarning,[mbOK],0); Exit; end; GetWindowThreadProcessId(c, @c); //Get ProcessID and ignore ThreadID c := OpenProcess(PROCESS_ALL_ACCESS, False, c); //Get ProcessHandle SetLength(lBuf, 1); ReadProcessMemory(c, Ptr($599CD8), @lBuf[1], 1, lRead); Edit1.Text := lBuf; CloseHandle(c); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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