您的位置:首页 > 其它

ReadProcessMemory

2014-05-15 23:29 267 查看
函数功能:
用于读取其他进程的数据
 
函数原型:
BOOL ReadProcessMemory(
HANDLE hProcess,
LPCVOID lpBaseAddress,
LPVOID lpBuffer,
DWORD nSize,
LPDWORD lpNumberOfBytesRead
);

参数:

hProcess:

进程句柄

lpBaseAddress:

读出数据的地址

lpBuffer:

存放读取数据的地址

nSize:

读出的数据大小

lpNumberOfBytesRead:

数据的实际大小

C#中使用
using System.Runtime.InteropServices;

[DllImport("kernel32.dll ")]
public static extern bool ReadProcessMemory(
int hProcess,
int lpBaseAddress,
out int lpBuffer,
int nSize,
out int lpNumberOfBytesRead
);


如果我们要读取内存中的的一段数据,我们引入部分可修改成如下:

//一维数组
[DllImport("kernel32.dll ")]
public static extern bool ReadProcessMemory(
int hProcess,
int lpBaseAddress,
byte[] lpBuffer,
int nSize,
out int lpNumberOfBytesRead
);

//二维数组
[DllImport("kernel32.dll ")]
public static extern bool ReadProcessMemory(
int hProcess,
int lpBaseAddress,
byte[,] lpBuffer,
int nSize,
out int lpNumberOfBytesRead
);


由于数组是引用传递,我们不需要写out关键字。

第一个参数:进程句柄,由OpenProcess函数获取

第二个参数:要读出数据的地址,使用CE等辅助工具可取得

第三个参数:用于存放读取数据的地址

第四个参数:要读出的数据大小

第五个参数:读出数据的实际大小
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: