获取进程内存的图像
本文关键字:图像 内存 取进程 获取 | 更新日期: 2023-09-27 17:57:01
我的目标是创建一个方法,该方法将采用进程句柄并返回表示该进程内存的字节数组。这是我所拥有的:
[DllImport("Kernel32.dll")]
public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, UInt32 nSize, ref UInt32 lpNumberOfBytesRead);
public static byte[] MemRead(IntPtr handle, IntPtr address, UInt32 size, ref UInt32 bytes)
{
byte[] buffer = new byte[size];
ReadProcessMemory(handle, address, buffer, size, ref bytes);
return buffer;
}
我不知道将什么作为参数传递给包装器方法。我可以找到一个handle
,bytes
是一个输出变量,但是address
和size
呢?我可以从哪里获得这些数据?
在调用 MemRead 之前,使用 VirtualQuery 找出是否实际分配了地址。从零作为地址,从 64K 作为页面大小开始,然后在每次迭代中以 64K 递增指针,直到达到系统上的最大内存大小。