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只是在结束地址中添加一个高十进制数,这自然会让它读取很多其他内存甚至不是我想要的过程,当然也会减慢读数。
所以我需要你的帮助,我如何确保所有的过程'内存被读取?我知道它最有可能在内存中以块的形式排序,但我不确定如何确定以后的起始地址和结束地址在内存中的位置。
谢谢!