AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Prozessspeicher lesen / schreiben Ergebnis falsch
Thema durchsuchen
Ansicht
Themen-Optionen

Prozessspeicher lesen / schreiben Ergebnis falsch

Ein Thema von Gehstock · begonnen am 16. Feb 2010 · letzter Beitrag vom 16. Feb 2010
Antwort Antwort
Seite 1 von 2  1 2      
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Prozessspeicher lesen / schreiben Ergebnis falsch

  Alt 16. Feb 2010, 12:34
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  dwBytes, Buf: DWord;
  dwEngineBase, dwClientBase: DWord;
  dwProcID: Integer;
  hProcess: THandle;
begin
  dwEngineBase := 0;
  dwClientBase := 0;
  hProcess := 0;
  dwProcID := GetProcessID('calc.exe');
  if dwProcID <> 0 then
  begin
    hProcess := OpenProcess(PROCESS_ALL_ACCESS, true, dwProcID);
    if (hProcess = INVALID_HANDLE_VALUE) then
    begin
      Showmessage('Ungültiges Handle :' + Inttostr(hProcess));
      exit;
    end;
    // dwClientBase := GetModuleBaseAddress(dwProcID, 'calc.exe');
    // Showmessage(InttoHex(dwProcID,8));
// dwBytes := 4;
// end
// else
// begin
// Showmessage('Finde Prozess nicht');
// end;
if ReadProcessMemory(dwProcID, Pointer($002C3C84), @Buf, 4, dwBytes) then
    caption := (inttostr(Buf) + '+' + (inttostr(dwBytes)));
end;
end;
liefert 1242625
was mache ich falsch weil lesen sollte ich ja eigentlich 85

habs vor lauter Verzweiflung auch in C++ versucht (obwohl ich das nicht kann) was aber genauso aussieht?
Miniaturansicht angehängter Grafiken
ce_860.jpg  
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#2

Re: Prozessspeicher lesen Ergebnis falsch

  Alt 16. Feb 2010, 12:42
Ließt ReadProcessMemory überhaupt was ... was sagt dessen Result und was sagt dwBytes?

Sicher daß die Adresse $002C3C84 stimmte?

...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Prozessspeicher lesen Ergebnis falsch

  Alt 16. Feb 2010, 12:45
dwBytes sagt 0, die Adresse ist zumindest die aus CE vieleicht interpretiere ich diese auch falsch?

nein Er liest nichts ich bin da schon seit Tagen dran aber immer das selbe

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  dwBytes, Buf: DWord;
  dwEngineBase, dwClientBase: DWord;
  dwProcID: Integer;
  hProcess: THandle;
begin
  dwEngineBase := 0;
  dwClientBase := 0;
  hProcess := 0;
  dwProcID := GetProcessID('calc.exe');
  if dwProcID <> 0 then
  begin
    hProcess := OpenProcess(PROCESS_ALL_ACCESS, true, dwProcID);
    if (hProcess = INVALID_HANDLE_VALUE) then
    begin
      Showmessage('Ungültiges Handle :' + Inttostr(hProcess));
      exit;
    end;
if not ReadProcessMemory(dwProcID, Pointer($002C3C84), @Buf, 4, dwBytes) then
  ShowMessage(SysErrorMessage(GetLastError))
  else
    caption := (inttostr(Buf) + '+' + (inttostr(dwBytes)));
end;
end;
Meldung Kann Speicher nicht lesen
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#4

Re: Prozessspeicher lesen Ergebnis falsch

  Alt 16. Feb 2010, 13:01
Siehst du, und schon haben wir die Erklärung für deine Frage.
Zitat von Gehstock:
was mache ich falsch
Heißt also, daß entweder dwProcID oder Pointer($002C3C84) nicht stimmt
oder daß dein Programm nicht genügend Rechte hat, um Lesen zu dürfen.

Aber mal sehn, ob man eine bessere Fehlermeldung rausbekommt, als dein nichtssagendes "Kann Speicher nicht lesen":
Delphi-Quellcode:
if not ReadProcessMemory(dwProcID, Pointer($002C3C84), @Buf, 4, dwBytes) then
  ShowMessage(SysErrorMessage(GetLastError));
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Prozessspeicher lesen Ergebnis falsch

  Alt 16. Feb 2010, 13:07
Ergebnis
Das Handle ist ungültig Wert ist 224

sollte er da nicht schon hier anschlagen
Delphi-Quellcode:
      hProcess := OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcID);
    if (hProcess = INVALID_HANDLE_VALUE) then
    begin
      Showmessage('Finde Handle nicht');
      exit;
    end;
Showmessage(InttoHex(dwProcID,8)); liefert auf jeden fall den korrekten Wert

Zitat:
SysErrorMesssage
mach da mal n s weg der nächste wundert sich
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#6

Re: Prozessspeicher lesen Ergebnis falsch

  Alt 16. Feb 2010, 13:19
Handle ist aber nicht gleich Handle.

http://msdn.microsoft.com/en-us/library/ms680553.aspx
A handle to the process with memory that is being read. The handle must have PROCESS_VM_READ access to the process.


Mit meinem Kellerschlüssel komm ich doch auch nicht in den Tresor der Staatsbank ... obwohl ich ja EINEN Schlüssel hab.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Prozessspeicher lesen Ergebnis falsch

  Alt 16. Feb 2010, 13:23
mach ich das nicht hier hProcess := OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcID); sorry steh grad auf dem Schlauch
Marcel
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#8

Re: Prozessspeicher lesen Ergebnis falsch

  Alt 16. Feb 2010, 13:26
Hallo Gehstock für notwendiges DebugPrivilege guckst du da..

http://www.delphipraxis.net/internal...t.php?t=173205

Thread#8

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#9

Re: Prozessspeicher lesen Ergebnis falsch

  Alt 16. Feb 2010, 14:09
muss bei ReadProcessMemory() nicht das Handle rein, dass du von OpenProcess bekommen hast?

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Prozessspeicher lesen Ergebnis falsch

  Alt 16. Feb 2010, 14:47
Man bin ich Doof ja das wars Danke
Marcel
  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 12:37 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