不久前我用C#创建了一个内存扫描器,它会读取进程的内存并查找某些值(例如整数42出现的每个位置)。此后,我重访这个项目,并试图设计它以在 64 位系统中运行。我遇到的问题是,64 位进程被授予多达8TB的虚拟内存(相比之下,在32位系统上只有2-4GB)!至少对于我的代码来说,在合理的时间内扫描0-8TB范围内的每个地址是不可能的。
我尝试从Process.MainModule.BaseAddress开始扫描,但我不知道在哪里停止阅读,我肯定会错过重要的值。如何缩小范围,以便可以扫描实际使用的进程范围?
我尝试从Process.MainModule.BaseAddress开始扫描,但我不知道在哪里停止阅读,我肯定会错过重要的值。如何缩小范围,以便可以扫描实际使用的进程范围?
VirtualQueryEx
是构建进程内存映射的方法。 - David Heffernan