搜索大型MEMORY.DMP文件中的字符串

时间:2015-09-02 09:37:33

标签: c++ windows windbg bsod computer-forensics

如何在Windows BSOD(Windows 8.1 64位)生成的大型MEMORY.DMP文件中搜索字符串?

在32位Windows上,命令

s -a 0 ffffffff "my pattern"

似乎有效。

但对于64位窗口,

s -a 0 ffffffff`ffffffff "my pattern"

几乎无限时间,即使MEMORY.DMP的总大小仅为400MB左右,而简单的grep可以在几秒钟内找到该模式。

我的目标是找到字符串的虚拟地址,以确定它被哪个堆栈/堆/文本区域覆盖。

如果文件格式的引用或规范可用,我最终会手工解释MEMORY.DMP的文件格式。任何提示?

1 个答案:

答案 0 :(得分:0)

目前这是我的操作方式:

  1. !heap -a

哪个将提供如下输出:

HEAPEXT: Unable to get address of ntdll!RtlpHeapInvalidBadAddress. Index   Address  Name      Debugging options enabled   1:   1b9be450000 
    Segment at 000001b9be450000 to 000001b9be54f000 (0008b000 bytes committed)   2:   1b9be1f0000 
    Segment at 000001b9be1f0000 to 000001b9be200000 (00001000 bytes committed)   3:   1b9bfe10000 
    Segment at 000001b9bfe10000 to 000001b9bfe1f000 (0000f000 bytes committed)
    Segment at 000001b9c3a40000 to 000001b9c3b3f000 (00005000 bytes committed)   4:   1b9be440000 
    Segment at 000001b9be440000 to 000001b9be44f000 (00007000 bytes committed)
  1. 在每个段的开始地址和结束地址之间进行搜索,直到找到数据为止
  2. 例如:s -a 000001b9be450000 000001b9be54f000“我的模式”

这可能无法在每种情况下都起作用,但是对我来说,它使我能够找到所需的数据。