如何从 memory.dmp 导出/解析文件?

如何从 memory.dmp 导出/解析文件?

我的电脑蓝屏了,重启前把所有信息保存到内存文件中。我有memory.dmp,还有一些非常重要的文件我没有保存。

我需要恢复的所有文件都是 txt 文件,我用记事本打开了,但没有保存,一旦我的电脑崩溃,它们就丢失了。所有都是纯文本。

我查看了 windbg 等程序,但找不到合适的解决方案。我开始认为 memory.dmp 文件中没有原始数据,只有日志?

请告诉我如何从 Memory.dmp 恢复未保存的文件

我正在使用 Windows Vista。

答案1

嗯。这是一个有趣的练习。如果我是你,我可能会逐字节(而不是整个文件)读取内存转储并将它们编码为 ASCII。

这肯定不是您所期望的“优雅”解决方案,而且需要花费一些时间来检查该输出,但您应该能够识别文本的各个部分,并且如果运气好的话,可以将它们重新组合在一起。

答案2

问题在于内存转储并不包含单一位置的所需数据。这是由应用程序的工作方式决定的。它们会部分分配内存,而不是一次性分配完整的内存块,这就是为什么存储在 RAM 中的数据可以位于 RAM 的不同位置,而不是像保存在硬盘上那样位于一个块中。

因此,为了恢复文件,您可能应该检查整个文件并逐个处理丢失的数据......从头开始重写它会容易得多。

答案3

使用LTF查看器并搜索 .dmp 文件。我不知道它是否能找到任何东西。

但至少它可以搜索整个文件。这将需要一段时间。

答案4

首先,你将花费比重新输入多 10 倍的时间恢复您正在处理的任何文件。

其次,所讨论的“文件”不会以“文件”的形式存在于内存中。它只是作为分配的内存块存在(可能分散到几个位置),并且可能与您记忆中看到的最终结果一点也不相似。

第三,memory.dmp 文件通常只包含分配给故障线程的内存。如果崩溃的不是您的编辑器,那么 memory.dmp 可能不包含任何对您有用的东西。崩溃的线程不太可能是“notepad”……即使如此,您也只能恢复该 notepad 实例。

我希望我这样说听起来不要像个混蛋...但这正是你应该经常保存的原因。

相关内容