WinAPI

WriteProcessMemory

  • 2010-10-31 18:27
  • 0 komentarzy
  • 1118 odsłon
  • Oceń ten tekst jako pierwszy
// C
BOOL WriteProcessMemory(
  HANDLE hProcess,
  LPVOID lpBaseAddress,
  LPCVOID lpBuffer,
  SIZE_T nSize,
  SIZE_T* lpNumberOfBytesWritten
);

// Delphi
function WriteProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer;
  nSize: DWORD; var lpNumberOfBytesWritten: DWORD): BOOL; stdcall; external kernel32 name 'WriteProcessMemory';


Funkcja WriteProcessMemory umożliwia zapis do pamięci innego procesu.

Parametry:
[in] hProcess
Uchwyt procesu, którego pamięć ma być nadpisana. Uchwyt musi mieć ustawione prawa PROCESS_VM_WRITE i PROCESS_VM_OPERATION aby operacja zapisu się powiodła.

[in] lpBaseAddress
Wskaźnik będący adresem bazowym obszaru pamięci, do którego ma nastąpić zapis. Zanim nastąpi zapis, system sprawdza czy są ustawione odpowiednie prawa umożliwiające dostęp do pamięci procesu. Jeśli takich praw nie ma, funkcja nie wykonuje zapisu i zwraca 0.

[in] lpBuffer
Wskaźnik do bufora zawierającego dane, które mają być zapisane do pamięci procesu.

[in] nSize
Ilość bajtów do zapisania (rozmiar bufora).

[out] lpNumberOfBytesRead
Ilość zapisanych bajtów. Jeśli przy wywołaniu funkcji ma wartość zero, jest ignorowany (nie jest zwracana żadna wartość).
 
Zwracana wartość
Jeśli operacja się powiedzie, zwraca niezerową wartość (true), w przeciwnym wypadku zwraca 0 (false). Aby dostać dokładniejsze informacje o błędzie, użyj funkcji GetLastError. Funkcja zwraca błąd jeśli uchwyt nie ma niezbędnych uprawnień do chociaż jedego z bloków zapisywanej pamięci.



Zobacz też: