不久前,我在 C# 中创建了一个内存扫描器,它将读取进程的内存并查找某些值(例如,整数 42 每次出现的位置)。从那以后,我重新审视了这个项目,并试图将其设计为在 64 位系统中工作。我遇到的问题是 64 位进程被授予高达 8TB 的虚拟内存(与 32 位系统上不起眼的 2-4GB 相比)!至少对于我的代码,不可能在任何合理的时间内扫描 0-8TB 范围内的每个地址。
我尝试在 Process.MainModule.BaseAddress 开始扫描,但我不知道在哪里停止阅读,而且我肯定缺少重要的值。如何缩小范围,以便扫描进程实际使用的范围?