2015-03-31 81 views
-1

基本上这并不是返回我要求的所有字节。ReadProcessMemory无法正常工作

// ReadBytes Method 
byte[] ReadBytes(uint address, int len) 
{ 
    int bytesread = 0; 
    byte[] output = new byte[len]; 
    ReadProcessMemory(HO_Handle, (IntPtr)address, output, len, out bytesread); 
    return ouput; // by the time we get here, bytesread == 0x0031E000 
} 

// Call 
byte[] region = ReadBytes(0x0C000000, 0x08000000); 

任何想法,为什么这不工作,我会如何去解决它?

+0

不要担心我最后的答案..一定是别的东西失算。 – Xela 2015-03-31 03:11:00

+0

你可以调用Marshal.GetLastWin32Error();在你的ReadProcessMemory之后并告诉我返回值?并检查ReadProcessMemory是否返回false。 – Xela 2015-03-31 03:26:35

+0

...以及你如何声明'ReadProcessMemory'? – reuben 2015-03-31 04:40:30

回答

0

我还没有找到原因,为什么这不起作用,但我重新启动我的电脑,现在它工作正常。无论出于何种原因,Windows一直在行动。

0

我认为你做错了。在VB.NET代码,我使用的是这样

ReadProcessMemory(_targetProcessHandle, _mbi.BaseAddress, _byteBuff, _mbi.RegionSize, 0) 

而且我觉得你是不是问适量