大家好,香香来为大家解答以上的问题。writeprocessmemory 不能写入这个很多人还不知道,现在让我们一起来看看吧!
1、首先其声明如下:BOOL WriteProcessMemory( HANDLE hProcess,// 进程的句柄,是用OpenProcess打开的 LPVOID lpBaseAddress,// 要写入的起始地址 LPVOID lpBuffer,// 写入的缓存区 DWORD nSize,// 要写入缓存区的大小 LPDWORD lpNumberOfBytesWritten // 这个是返回实际写入的字节。
2、 );如果你要改写目标进程的一段内存,可以类似这样char *buffer="abc";DWORD dwBytes=0;WriteProcessMemory(hProcess, 0x00400000, buffer, 3, &dwBytes);如果是整型的,就是int value=3454354;DWORD dwBytes=0;WriteProcessMemory(hProcess, 0x00400000, &value, sizeof(value), &dwBytes);其中的起始地址我是随便写的0x00400000, 实际应用时,填成实际值。
3、WriteProcessMemory此函数能写入某一进程的内存区域。
4、入口区必须可以访问,否则操作将失败。
5、此函数能写入某一进程的内存区域(直接写入会出Access Violation错误,故需此函数)。
6、VC++声明BOOL WriteProcessMemory(HANDLE hProcess,LPVOID lpBaseAddress,LPVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesWritten);参数:hProcess由OpenProcess返回的进程句柄。
7、如参数传数据为 INVALID_HANDLE_VALUE 【即-1】目标进程为自身进程lpBaseAddress要写的内存首地址再写入之前,此函数将先检查目标地址是否可用,并能容纳待写入的数据。
8、lpBuffer指向要写的数据的指针。
9、nSize要写入的字节数。
10、返回值非零值代表成功。
11、可用GetLastError获取更多的错误详细信息。
12、要求操作系统版本: Windows CE 2.0及以上版本。
13、所在头文件: Winbase.h链接库: Nk.lib。
本文到此分享完毕,希望对大家有所帮助。