前一段时间,我在C#中创建了一个内存扫描器,它可以读取进程的内存并查找特定值(例如每次出现整数42的位置)。从那以后,我重新审视了这个项目,并试图将其设计为64位系统。我遇到的问题是64位进程被授予高达8TB的虚拟内存(与32位系统上的低至2-4GB相比)!至少对于我的代码来说,在任何合理的时间范围内扫描0-8TB范围内的每个地址都是不可能的。以64位扫描内存?
我试着在Process.MainModule.BaseAddress开始我的扫描,但我不知道停止阅读的地方,我肯定缺少重要的值。如何缩小范围以便我可以扫描过程实际使用的范围?
您需要获取进程的内存映射。搜索“进程内存映射”,这应该让你开始。 –
我搜索了进程内存映射和类似的术语,但我能找到的所有解释是如何分页和虚拟内存的工作。这是有用的信息,但没有真正指出如何实现创建或如何查看外部进程的内存映射。然而,这确实使我研究了探索流程虚拟内存的其他方法。 – user1881066
扫描调用'VirtualQueryEx'的地址空间是如何构建一个进程内存映射。 –