Re: Prozessspeicher lesen Ergebnis falsch
nun Hab ich ein Ähnliches Problem beim Schreiben
fehler sind unter Windows7 Nur ein Teil der ReadProcessMemory- oder WriteProcessMemory-Anforderung wurde abgeschlossen WinXP Falscher Parameter
Delphi-Quellcode:
hab mir schon einige Delphi und C++ Sourcecodes angeschaut wegen dieser DebugPrivileges welche dort aber nie verwendet werden
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, false, dwProcID); if (hProcess = INVALID_HANDLE_VALUE) then begin Showmessage('Ungültiges Handle :' + Inttostr(hProcess)); exit; end; //if not ReadProcessMemory(hProcess, Pointer($2c3ca4), @Buf, 4, dwBytes) then // ShowMessage(SysErrorMessage(GetLastError)+ ' : '+Inttostr(hProcess)) // else // caption := (inttostr(Buf)); //end; if not WriteProcessMemory(hProcess,Pointer($002C3C84),Pointer($55), 1,dwBytes) then ShowMessage(SysErrorMessage(GetLastError)) else caption := (inttostr(dwBytes)); end; end; |
Re: Prozessspeicher lesen / schreiben Ergebnis falsch
Die Hilfe zu den Parametern von WriteProcessMemory hätte geholfen. :wink:
SizeOf(Pointer($55)) ist bei mir ungleich 1. Btw: CloseHandle fehlt. |
Re: Prozessspeicher lesen / schreiben Ergebnis falsch
Pointer($55) kann nicht stimmen, da einem Programm im Usermode kein Zugriff auf die 64 KB gewährt sind.
Falls du die $55 als Byte schreiben willst, dann muß dieses in eine Variable oder in einen anderen Puffer und dann gibst du den Zeiger auf diesen Puffer dort an. Zitat:
aber hier zeigt der Pointer auf einen ungültigen Speicherbereichen oder er will hier den Pointer, anstatt den Wert speichern. |
Re: Prozessspeicher lesen Ergebnis falsch
Das dies möglich ist weiß ich, nur folgendes hat mich zu der Antwort verleitet:
Zitat:
|
Re: Prozessspeicher lesen Ergebnis falsch
Das ist 'ne Standardmeldung, welche eintritt, wenn Bytes nicht gelesen/geschrieben werden können ... was hier beim letzen und auch rein zufällig beim einzigen Byte passiert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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