2011-10-07 69 views
0

我試圖使用ReadProcessMemory將一個動態數量的字節讀入一個數組,然後將其返回。我根本無法讓它正常工作。我目前的代碼是...將C++ ReadProcessMemory轉換爲字節數組.JPEG編寫

byte *Application::readMemory(DWORD address, int length) { 
    byte *buffer = new byte[length]; 
    SIZE_T bytesRead; 
    ReadProcessMemory(piProcessInfo.hProcess, (void *)address, &buffer, length, &bytesRead); 
    return buffer; 
} 

任何幫助,將不勝感激。

+2

它以什麼方式不起作用? –

+0

調試時,我得到「運行時檢查失敗#2 - 變量'緩衝區'周圍的堆棧已損壞。」 –

+0

這是在32位或64位Windows下? – trojanfoe

回答

4

它不應該是

ReadProcessMemory(piProcessInfo.hProcess, (void *)address, buffer, length, &bytesRead); 

?如果您將緩衝區指針地址作爲輸入參數,則ReadProcessMemory會將其複製到緩衝區指針所在的位置(不是緩衝區,而是緩存到指向緩衝區的指針以及超出的緩衝區指針),並且將它放在堆棧上,堆棧會被損壞。

+0

我忽略了這一點。我只是想,因爲我必須通過&bytesRead我也需要傳遞&緩衝區(沒有意識到它是一個指針)。謝謝你清理那個。 –