- 如何在不触发访问冲突的情况下实现这一目标?
我试过将 bool 指针设置为特定的起始位置,然后逐步递增它。这会导致访问冲突。
我正在使用 Visual Studio 2010
最佳答案
Windows 是一个虚拟内存操作系统。这意味着软件处理“内存”——它可能会或可能不会在某个时间点缓存在 RAM 中。相当多的进程内存可能存储在磁盘上 - 在页面文件中,或作为文件映射的一部分。
那么,如果你从“转储RAM”降级为“转储内存”,那么你需要问问自己“哪个内存”。
除了作为虚拟内存操作系统之外,Windows 还可以保护应用程序免受彼此的影响 - 每个进程都有自己的专用内存地址空间。因此,您需要决定要转储哪些内存。我们自己的过程?这很容易。使用 VirtualQuery 检查 block 并将它们转储出来。
查看另一个进程?那更复杂。存在阻止不受信任的应用程序查看更受信任的进程内存的安全屏障。如果您有足够的权限,VirtualQueryEx 将允许您检查另一个进程。
最后,如果你想检查内核内存,那么你需要开发某种驱动程序:用户模式代码根本不允许查看内核内存。
关于C++:转储 RAM 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4286166/