ReadProcessMemory会被检测到吗-_仅完成部分readprocess如何解决

发布时间:2025-12-09 14:07:30 浏览次数:4

ReadProcessMemory

从特定进程的内存里读取数据。被读取的整个位置应该是可读的否则操作会失败。

BOOL WINAPI ReadProcessMemory(

__in HANDLE hProcess ,

__in LPCVOID lpBaseAddress ,

__out LPVOID lpBuffer ,

__in SIZE_T nSize ,

__out SIZE_T* lpNumberOfBytesRead

);

参数:

hProcess:目标进程的句柄。这个句柄必须有 PROCESS_VM_READ 标记。

lpBaseAddress:一个指向目标进程需要读取数据的首地址的指针。在读取数据之前,系统将会确认需读取的所有数据是否可读,如果不可读那么函数执行失败。

lpBuffer:指向要接收读取到的数据的缓冲区。

nSize:读取的数据大小,单位为Bytes。

lpNumberOfBytesRead:指向一个变量,用于放置传送数据的大小。如果为NULL,该参数被忽略。

返回值:

成功:非零。

失败:零。

得到更多错误信息,使用 GetLastError 函数。

如果读到了不可读的内存,该函数会失败。

附注:

该函数从指定的进程读取内存数据到当前进程的内存。任何标记为 PROCESS_VM_READ 的句柄都能使用该函数。Typically but not always, the process with address space that is being written to is being debugged.(在很典型的情况下,可被写内存的进程是处于调试状态的。)

要求:

头文件:在Winbase.h里声明;包括Windows.h。

库:Kernel32.lib

动态链接库:Kernel32.dll

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477