WriteProcessMemory 函数 (memoryapi.h)

  • 2018/12/05

将数据写入指定进程中的内存区域。要写入的整个区域必须是可访问的,否则操作将失败。

句法

C++
BOOL WriteProcessMemory(  HANDLE  hProcess,  LPVOID  lpBaseAddress,  LPCVOID lpBuffer,  SIZE_T  nSize,  SIZE_T  *lpNumberOfBytesWritten);

参数

hProcess

要修改的进程内存的句柄。句柄必须具有对进程的 PROCESS_VM_WRITE 和 PROCESS_VM_OPERATION 访问权限。

lpBaseAddress

指向指定进程中写入数据的基地址的指针。在数据传输之前,系统会验证指定大小的基地址和内存中的所有数据是否都可以进行写访问,如果不可访问,则该功能失败。

lpBuffer

指向包含要写入指定进程地址空间的数据的缓冲区的指针。

nSize

要写入指定进程的字节数。

lpNumberOfBytesWritten

一个指向接收传输到指定进程的字节数的变量的指针。该参数是可选的。如果lpNumberOfBytesWrittenNULL,则忽略该参数。

返回值

如果函数成功,则返回值非零。

如果函数失败,则返回值为 0(零)。要获取扩展错误信息,请调用GetLastError。如果请求的写操作进入无法访问的进程区域,则该函数将失败。

评论

WriteProcessMemory将当前进程中指定缓冲区的数据复制到指定进程的地址范围内。任何具有对要写入的进程具有 PROCESS_VM_WRITE 和 PROCESS_VM_OPERATION 访问权限的句柄的进程都可以调用该函数。通常但并非总是如此,正在调试具有写入地址空间的进程。

要写入的整个区域必须是可访问的,如果不可访问,则该功能失败。

要求

 

最低支持客户端 Windows XP [仅限桌面应用程序]
最低支持服务器 Windows Server 2003 [仅限桌面应用程序]
目标平台 视窗
标题 memoryapi.h(包括 Windows.h)
 链接库                        Kernel32.lib
动态链接库 Kernel32.dll
(0)

相关推荐