我转储了一台 Windows 7 电脑的 RAM,使用LiveKd
它基本上可以工作。内存已转储,但随后将二进制转储转换为“摘要格式”失败。然后当我尝试使用它读取文件时,volatility
它告诉我没有合适的地址空间映射是合乎逻辑的。有没有办法将原始内存转储转换为易失性识别的格式?
将原始内存转储转换为易失性识别的格式
默认情况下,LiveKD 获取显示为故障转储文件的内核内存转储,而不是 RAM 内容的完整原始转储。波动性需要完整的内存转储。我推荐这些工具中的任何一个用于 Windows 内存映像。LiveKD 的目标是调试,而不是取证分析(KD = 内核调试)。它是必须通过串行连接使用 WinDbg 和 KD 来“实时”调试内核的替代方法(并且系统不必在调试模式下启动)。LiveKD 通过实现一个文件系统过滤驱动程序来欺骗调试器,让他们认为他们正在查看一个故障转储文件,该驱动程序提供一个调试器可以打开的“虚拟”故障转储文件。
话虽如此,如果提供了正确的选项,来自 LiveKD 的转储技术上可能包含完整的 RAM 转储,但在它之前有一个标头,以便调试器将文件格式识别为故障转储文件。崩溃转储文件只是一个文件头,后面跟着物理内存的内容,这样驱动程序就可以用物理内存的内容来满足对虚拟转储文件的读取,驱动程序可以轻松地从\Device\Physical Memory
内存管理器创建的节对象中读取这些内容.
在Volatility 的创建者编写的《内存取证的艺术》一书中,他们在第 96-98 页讨论了 Windows 故障转储的结构,并解释说“Windows 故障转储文件格式是为调试目的而设计的”,并且他们以a_DMP_HEADER
或_DMP_HEADER64
结构(第 96 页)。作者澄清说,只有完整的内存转储与 Volatility 兼容,内核内存转储和小型转储均不兼容(这里是一个 MS TechNet 博客条目,解释了差异)。
我个人将 010 Hex Editor 用于许多涉及二进制数据的取证解析任务,它有一个用于解析 32 位故障转储的预制模板。有关故障转储标头格式的更多信息,请参阅Volatility 文档。