C ReadProcessMemory - 如何检查与进程关联的内存区域

fla*_*404 1 c c++ visual-studio-2008

我想读取与特定进程相关的所有内存.我知道ReadProcessMemory,但由于我没有使用它的经验,我担心我会得到一堆垃圾(垃圾......).

a)我如何计算,从基指针到结束)我可以读取的总区域b)迭代这个内存区域并打印它的最佳方法/最安全c)如何打印给定我不知道它将包含哪些值,以便我可以查看它?

我还希望能够在输出中包含内存中每个数据的实际位置.

谢谢R.

R S*_*hko 5

内存可以以页为单位(通常为4096字节)访问.如果您单独阅读每个页面,您可以知道如果读取失败,该页面将无法读取,您可以跳过它.

#define PAGESIZE 4096
char *base = (char *)0;
do {

    char buffer[PAGESIZE];

    if (ReadProcessMemory(handle, base, buffer, PAGESIZE, NULL) != 0)
    {
        // buffer is valid

        // the address of buffer[X] is base+X
    }

    base += PAGESIZE;

// keep looping going until we wrap back around to 0
} while (base != 0);   
Run Code Online (Sandbox Code Playgroud)