[Function]Read/WriteProcessMemory

Windows Memory Read/Write Lib


Windows Memory Read[MSDN]

Memory Read Function
BOOL ReadProcessMemory( HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumberOfBytesRead );

함수명 : ReadProcessMemory
인자명 : hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead


분석

인자명 자료형 설명 비고

hProcess

HANDLE
[_In_]
OpenProcess() 함수를 통해
Process의 메모리를 제어하는 Handle

단순 읽기위해선 PROCESS_VM_READ,
단순 쓰기위해선 PROCESS_VM_WRITE,
쓰고 읽기위해선 PROCESS_ALL_ACCESS

lpBaseAddress

LPCVOID
[_In_]
읽을 메모리 주소를 가르키는 포인터
 

lpBuffer

LPVOID
[_Out_]
읽어낸 데이터를 저장할 포인터
 

nSize

SIZE_T
[_In_] 
읽은 내용을 저장할 Buffer의 크기
 

lpNumberOfBytesRead

SIZE_T*
[_Out_]
쓰거나, 읽은 메모리의 크기
 만약 NULL일 경우 해당 인자는 무시된다.

반환

자료형 : BOOL
    Memory Read Success != 0
    Memory Read Fail       == 0


Windows Memory Write[MSDN]

Memory Write Function
BOOL WriteProcessMemory( HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumberOfBytesWritten );

함수명 : WriteProcessMemory
인자명 : hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead


분석

인자명 자료형 설명 비고

hProcess

HANDLE
[_In_]
OpenProcess() 함수를 통해
Process의 메모리를 제어하는 Hendle

단순 읽기위해선 PROCESS_VM_READ,
단순 쓰기위해선 PROCESS_VM_WRITE,
쓰고 읽기위해선 PROCESS_ALL_ACCESS

lpBaseAddress

LPVOID
[_In_]
쓴 메모리 주소를 가르키는 포인터
 

lpBuffer

LPCVOID
[_In_]
쓸 데이터가 저장된 포인터
 

nSize

SIZE_T
[_In_]
쓸 내용을 저장한 Buffer의 크기
 

lpNumberOfBytesRead

SIZE_T*
[_Out_]
쓰거나, 읽은 메모리의 크기
 WriteProcessMemory에선 옵션이다.

반환

자료형 : BOOL
    Memory Write Success != 0
    Memory Write Fail       == 0

Reference

http://paladin.tistory.com/100

글의 문제가 있다면 댓글을 달아 주세요.

This site uses Akismet to reduce spam. Learn how your comment data is processed.