AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [Erledigt] Speicheradresse (immer gleich) auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

[Erledigt] Speicheradresse (immer gleich) auslesen

Ein Thema von Muellermilchtrinker · begonnen am 24. Nov 2009 · letzter Beitrag vom 24. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#1

[Erledigt] Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 17:01
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.^^
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 17:11
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#3

Re: Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 17:14
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: Tutorial Spiele-Trainer

HTH
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#4

Re: Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 17:14
Such mal nach ReadProcessMemory hier im Forum.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 17:15
Das ist ein bisschen kniffelig. Unter NT kann jedes Programm nur noch auf seinen eigenen, virtuellen Adressraum zugreifen. Du müsstest mit Delphi-Referenz durchsuchenWriteProcessMemory und Delphi-Referenz durchsuchenCreateRemoteThread einen Thread im fremden Prozess erzeugen, und mit diesem den Wert auslesen, und anschließend den Wert irgendwie an dein Hauptprogramm zurückgeben.

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 [/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 17:27
Erstmal danke für die Antworten.
Könnte mir jemand vllt ein Beispiel für ReadProcessMemory geben.
Danke
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 17:29
Zitat von Muellermilchtrinker:
Erstmal danke für die Antworten.
Könnte mir jemand vllt ein Beispiel für ReadProcessMemory geben.
Danke
Nein, aber die Suchfunktion bzw. die Delphi-Referenz kann das: Delphi-Referenz durchsuchenReadProcessMemory
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 18:46
Zitat von wicht:
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: Tutorial Spiele-Trainer

HTH
Das Tut hab ich mir schon angeschaut.
Das Problem ist nur das dort in den Speicher geschrieben wird.
Ich will aber nur auslesen.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 18:59
Habs jetzt so gemacht:
Delphi-Quellcode:
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);
Nur bekomm ich in Edit1.Text unverständliche Zeichen.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Speicheradresse (immer gleich) auslesen

  Alt 24. Nov 2009, 19:06
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);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:26 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