프로그래밍/WinAPI

WriteProcessMemory 함수

MAJG 2020. 9. 5. 21:18
반응형
BOOL WriteProcessMemory(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten );

WriteProcessMemory 함수는 특정 프로세스의 메모리영역에 데이터를 쓰기한다.

 

hProcess

메모리를 수정할 프로세스의 핸들이다.

이 핸들은 반드시 PROCESS_VM_WRITEPROCESS_VM_OPERATION 권한을 가져야한다.

 

lpBaseAddress

데이터 쓰기를 시작할 프로세스의 메모리주소이다.

데이터 쓰기를 시작하기전 시스템은 지정된 크기의 주소와 메모리의 모든 쓰기 접근이 가능한지

확인하고, 접근할 수 없는경우 함수는 실패한다.

 

lpBuffer

프로세스에 쓰기할 데이터가 들어있는 버퍼의 포인터를 의미한다.

 

nSize

프로세스에 쓰기할 데이터의 바이트 크기를 의미한다.

 

lpNumberOfBytesWritten

프로세스에 전송된 바이트 수를 수신하는 변수에 대한 포인터를 의미한다.

이 매개변수는 옵션으로, NULL 을 가지게 되면 이 매개변수는 무시된다.

 

 

WriteProcessMemory 함수가 정상적으로 실행되면 0이 아닌 값을 출력한다.

함수의 실행이 실패할 경우 0 을 반환하며 실패에 대한 자세한 정보는 GetLastError 함수를 통해 알 수 있다.

요청된 쓰기가 접근할 수 없는 프로세스 영역과 겹치는 경우 함수의 실행은 실패된다.

 

Example

WriteProcessMemory(hProcess, pBuf, (LPVOID)szData, dwBufSize, NULL);
반응형