![]() |
Prozessspeicher lesen / schreiben Ergebnis falsch
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
liefert 1242625
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; 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? |
Re: Prozessspeicher lesen Ergebnis falsch
Ließt ReadProcessMemory überhaupt was ... was sagt dessen Result und was sagt dwBytes?
Sicher daß die Adresse $002C3C84 stimmte? ... |
Re: Prozessspeicher lesen Ergebnis falsch
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:
Meldung Kann Speicher nicht lesen
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; |
Re: Prozessspeicher lesen Ergebnis falsch
Siehst du, und schon haben wir die Erklärung für deine Frage. :zwinker:
Zitat:
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)); |
Re: Prozessspeicher lesen Ergebnis falsch
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;
Delphi-Quellcode:
liefert auf jeden fall den korrekten Wert
Showmessage(InttoHex(dwProcID,8));
Zitat:
|
Re: Prozessspeicher lesen Ergebnis falsch
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. |
Re: Prozessspeicher lesen Ergebnis falsch
mach ich das nicht hier
Delphi-Quellcode:
sorry steh grad auf dem Schlauch
hProcess := OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcID);
|
Re: Prozessspeicher lesen Ergebnis falsch
Hallo Gehstock für notwendiges DebugPrivilege guckst du da..
![]() Thread#8 lg. Astat |
Re: Prozessspeicher lesen Ergebnis falsch
muss bei ReadProcessMemory() nicht das Handle rein, dass du von OpenProcess bekommen hast?
Bernhard |
Re: Prozessspeicher lesen Ergebnis falsch
Man bin ich Doof ja das wars Danke :bouncing4:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 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