2011-10-07 66 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我也需要传递&缓冲区(没有意识到它是一个指针)。谢谢你清理那个。 –