阅读量:0
在C++中,WriteProcessMemory函数用于向指定进程的内存写入数据。
函数的用法如下:
BOOL WriteProcessMemory( HANDLE hProcess, // 目标进程的句柄 LPVOID lpBaseAddress, // 写入数据的起始地址 LPCVOID lpBuffer, // 数据缓冲区的指针 SIZE_T nSize, // 要写入的字节数 SIZE_T *lpNumberOfBytesWritten // 实际写入的字节数 );
参数说明:
hProcess
:目标进程的句柄,可以通过OpenProcess函数获得。lpBaseAddress
:写入数据的起始地址。lpBuffer
:指向要写入的数据的缓冲区指针。nSize
:要写入的字节数。lpNumberOfBytesWritten
:指向一个变量的指针,用于存储实际写入的字节数。
函数返回值:
- 如果函数调用成功,返回值为非零值。
- 如果函数调用失败,返回值为零。可以通过调用GetLastError函数获取详细错误信息。
示例代码:
#include <iostream> #include <windows.h> int main() { // 打开目标进程 HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, targetProcessId); // 写入数据 int value = 123; LPVOID lpBaseAddress = (LPVOID)0x12345678; SIZE_T nSize = sizeof(value); SIZE_T lpNumberOfBytesWritten; BOOL result = WriteProcessMemory(hProcess, lpBaseAddress, &value, nSize, &lpNumberOfBytesWritten); if (result) { std::cout << "WriteProcessMemory succeeded. Bytes written: " << lpNumberOfBytesWritten << std::endl; } else { std::cout << "WriteProcessMemory failed. Error code: " << GetLastError() << std::endl; } // 关闭目标进程句柄 CloseHandle(hProcess); return 0; }
上述示例代码中,首先使用OpenProcess函数打开了一个目标进程的句柄。然后通过WriteProcessMemory函数向目标进程写入了一个整数值。最后使用CloseHandle函数关闭目标进程句柄。