在大内存中搜索字符串.DMP文件
Search strings in a large MEMORY.DMP file
如何在大内存中搜索字符串。Windows BSOD生成的DMP文件(Windows 8.1 64位)?
在32位Windows上,命令
s -a 0 ffffffff "my pattern"
似乎有效。
但是对于64位windows,
s -a 0 ffffffff`ffffffff "my pattern"
几乎需要无限的时间,即使内存的总大小。DMP大约只有400MB,而一个简单的grep
可以在几秒钟内找到模式。
我的目标是找到字符串的虚拟地址,以确定哪个堆栈/堆/文本区域被它覆盖。
我最后会求助于解释MEMORY的文件格式。如果文件格式的参考或规范可用,则手工DMP。有提示吗?
目前我是这样做的:
- !堆——
将提供如下输出:
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)
- 在每个段的起始地址和结束地址之间搜索,直到找到您的数据
- 示例:s -a 000001b9be450000 000001b9be54f000 "my pattern"
这可能不适用于每一个场景,但对我来说,它允许我找到我正在寻找的数据。