您的位置:首页 >百科动态 >

writeprocessmemory 不能写入

大家好,香香来为大家解答以上的问题。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。

本文到此分享完毕,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!