C#读取所有进程'记忆

时间:2017-04-06 12:59:22

标签: c# memory memory-management process

ELLO!

尝试读取正在运行的进程的内存,它确实有效。这里的问题是我发现我的结束地址, IntPtr endOffset = IntPtr.Add(startOffset, getProcess.MainModule.ModuleMemorySize);,只给我加载模块所需的内存量。

因此给了我很多未读的进程的未读内存。 我写的代码根本不是很有趣,但这就是我获取startaddress和endaddress的方法,其中endaddress显然没有包含所有后来分配的内存。

        Process getProcess = Process.GetProcessesByName("processname")[0];
        IntPtr processHandle = OpenProcess(PROCESS_WM_READ, false, getProcess.Id);
        IntPtr startOffset = getProcess.MainModule.BaseAddress;
        IntPtr endOffset = IntPtr.Add(startOffset, getProcess.MainModule.ModuleMemorySize);

我的解决方案" atm只是在结束地址中添加一个高十进制数,这自然会让它读取很多其他内存甚至不是我想要的过程,当然也会减慢读数。

所以我需要你的帮助,我如何确保所有的过程'内存被读取?我知道它最有可能在内存中以块的形式排序,但我不确定如何确定以后的起始地址和结束地址在内存中的位置。

谢谢!

0 个答案:

没有答案