2015-03-31 2 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

+0

Можете ли вы вызвать Marshal.GetLastWin32Error(); после вашей ReadProcessMemory и указать мне возвращаемое значение? и проверьте, возвращает ли ReadProcessMemory значение false. – Xela

+0

... и как вы объявили 'ReadProcessMemory'? – reuben

ответ

0

Я до сих пор не нашел причину, почему это не работает, но я перезапустил свой компьютер, и теперь он работает нормально. По какой-то причине Windows должна была действовать.

0

Я думаю, что вы делаете это неправильно. Код VB.NET, который я использую, это как этот

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

И я думаю, что вы не требуете нужного количества

Смежные вопросы