[DllImport("kernel32.dll ")]
static extern bool ReadProcessMemory(int hProcess, IntPtr lpBaseAddress, out int lpBuffer, int nSize, out int lpNumberOfBytesRead);
这个API函数中的这个函数有五个参数
hProcess:进程句柄lpBaseAddress:读出数据的地址lpBuffer:存放读取数据的地址nSize:读出的数据大小lpNumberOfBytesRead:数据的实际大小第二个参数如何获得,也就是内存地址如何获得,好像要用到指针不知道怎么用,我现在能获取到文件的句柄,就是不知道这个函数该如何操作。请高手给个指点,最好有代码!!谢了
static extern bool ReadProcessMemory(int hProcess, IntPtr lpBaseAddress, out int lpBuffer, int nSize, out int lpNumberOfBytesRead);
这个API函数中的这个函数有五个参数
hProcess:进程句柄lpBaseAddress:读出数据的地址lpBuffer:存放读取数据的地址nSize:读出的数据大小lpNumberOfBytesRead:数据的实际大小第二个参数如何获得,也就是内存地址如何获得,好像要用到指针不知道怎么用,我现在能获取到文件的句柄,就是不知道这个函数该如何操作。请高手给个指点,最好有代码!!谢了
风行下载安装
皮皮播放器下载
uusee网络电视2010下载
传入方式:
new IntPtr(地址值)
//读内存
[DllImportAttribute("kernel32.dll", EntryPoint = "ReadProcessMemory")]
public static extern bool ReadProcessMemory
(
IntPtr hProcess, // 需要读取内存信息的目标进程的句柄
IntPtr lpBaseAddress, // 需要读取信息的目标进程的基地址(内存指针)
IntPtr lpBuffer, // 需要读取的数据
int nSize, // 需要读取的字节数
IntPtr lpNumberOfBytesRead
);
static extern bool ReadProcessMemory(uint hProcess, IntPtr lpBaseAddress,IntPtr lpBuffer, uint nSize, ref uint lpNumberOfBytesRead);
private void button1_Click(object sender, EventArgs e)
{
byte[] buffer=new byte[4];
IntPtr bufferAddress=Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0);
uint vNumberOfBytesRead=0;
uint pro2 =1;
ReadProcessMemory(pro2,(IntPtr)0xc0890c0,vBytesAddress,(uint)buffer.Length, ref vNumberOfBytesRead);
int i=Marshal.ReadInt32(bufferAddress);
}
Marshal.ReadInt32((IntPtr)地址);
你把原来的c++的函数接口说明发出来看看,