Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ramadresse auslesen (https://www.delphipraxis.net/103882-ramadresse-auslesen.html)

michback 23. Nov 2007 13:18


Ramadresse auslesen
 
Gibt es ein tutorial mit dem ich erlernen kann wie ich eine bestimmte Speicher Adresse auslesen kann?

Und wenn Auch möglich würde gern eine exe im Ram auslesen und darin nach bestimmten Werten suchen. z.B. Der Spieler des Spieles XY hat 10000 Goldeinheiten.

Neotracer64 23. Nov 2007 14:21

Re: Ramadresse auslesen
 
Ein Integer an Adresse $00400000 im eigenen virtuellen Speicherraum (nur in der selben Exe) auslesen und ausgeben.

Delphi-Quellcode:
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;

michback 23. Nov 2007 14:28

Re: Ramadresse auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe mit dem Programm Ram cheat Die Adressen herausgefunden.
Und kann eine .pos (winHex Positions datei) datei auslagern. Die Adresse ist jedesmal anders denoch finden beide tools die Adresse wieder.



sagt euch das was?


Anbei mal die exportierte Datei



DANKE schon mal für die Hilfe, leider muss mein Programm aber aus anderen Programmen z.B. Spielen werte auslesen. Oder habe ich das falsch verstanden?

Neotracer64 23. Nov 2007 15:00

Re: Ramadresse auslesen
 
Hast du dir mein zweites Beispiel angesehen?
Damit kannst du aus einem fremden Prozess einen beliebigen Wert finden und die Adresse dieses Wertes wird zurückgegeben.
Wenn du verstanden hast, was dort passiert, weisst du auch wie du an den ausgelesenen Wert kommst. (buffer).

Die beiden Adressen der Werte, die du angehängt hast, bringen dir herzlich wenig, wenn sie, wie du sagtest, immer woanders stehen.
Beobachte mal in welchen Bereichen die beiden Werte ungefähr auftauchen. Falls das vollkommen unterschiedlich ist jedesmal, kannst du versuchen fixe Adressen zu finden, an denen Pointer stehen, die auf diese Werte zeigen, was oft der Fall ist, damit das Spiel auch auf diese Werte zugreifen kann.

michback 23. Nov 2007 15:32

Re: Ramadresse auslesen
 
danke ich bastel gleich mal herum.

Wo kann man ersehen von welcher bis welcher Speicher Adresse eine Anwendung arbeitet ?

Christian Seehase 23. Nov 2007 18:50

Re: Ramadresse auslesen
 
Moin michback,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Für das Ermitteln aller belegter Speicherbereiche hatte ich hier mal ein Beispiel gepostet (AFAIR)
(ich denke mal in der Windows-Sparte).
Als Suchbegriff käme da, u.a. VirtualQueryEx in Frage.

elliott 7. Dez 2007 17:53

Re: Ramadresse auslesen
 
oder schau die funktion createtoolhelp32snapshot bei msdn an!
die toolhelp funktionen kann man über die delphi-unit TLHelp32 einbinden!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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