2015-03-31 21 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) 

而且我覺得你是不是問適量