【发布时间】:2012-04-09 13:19:49
【问题描述】:
我正在研究通过高级编程语言执行 Windows 7 机器内存 (RAM) 转储的最佳方法,例如C#。我已经对此进行了大量研究,我将在下面进行总结。
•微软 API 对内存的访问似乎在一段时间前被切断了 (\Device\PhysicalMemory)
•现在看来,要访问内存,您的代码必须在内核模式下执行,而不是在用户模式下才能访问内存
•我研究了 Windows 在系统挂起时如何转储内存(小型、大型和内核转储),这种方法不适合我的要求
我想知道是否有人对我应该如何访问机器的物理内存有很好的了解。由于我习惯于编写窗口应用程序,因此我对低级编码语言的了解很少。到目前为止,我收到的建议包括编写一个驱动程序来访问内存,然后通过更高级别的编程语言调用它。
任何社区可以提供的任何帮助都将不胜感激!提前致谢。
【问题讨论】:
-
您将如何处理转储? procdump -ma 在您的环境中不够用吗?
-
即使使用低级语言也很难访问物理内存。您收到的建议很可能是最明智的方法。
-
我的搜索让我找到了 procdump -ma 但不幸的是它只允许您转储单个进程的内存。我正在考虑访问完整的内存,包括操作系统加载的文件等。如果有人有任何其他建议,或者正如 Mat 所说,我可能需要沿着驱动程序路线前进,我将不胜感激。 noonnb & Justin 我已根据您的建议采取了行动。干杯
-
如果这在用户模式下是可能的,那将是一场安全灾难。如果您也可以写入内存,那将是一场保护和安全灾难。你需要一个司机。 “我对低级编码语言的了解很少”——如果可以的话,你应该避免这项任务。
标签: c# memory dump ram memory-dump