c++ - 在大型 MEMORY.DMP 文件中搜索字符串

标签 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 的文件格式。任何提示?

最佳答案

目前我是这样做的:

  • !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)
    
  • 在每个段的起始地址和结束地址之间搜索,直到找到您的数据
  • 例如:s -a 000001b9be450000 000001b9be54f000“我的模式”

  • 这可能不适用于所有场景,但对我来说,它允许我找到我正在寻找的数据。

    关于c++ - 在大型 MEMORY.DMP 文件中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32349653/

    相关文章:

    c++ - 当我需要通过指针传递时(而不是通过引用传递)

    c++ - 清除谷歌测试错误中的标准输出错误

    c++ - 如何禁用动态频率缩放?

    c# - 使用远程桌面的远程计算机的 MachineName

    windows - 在最终用户系统上调试 "application configuration is incorrect"问题的好方法?

    WinDBG-如何设置所有要传递到应用程序的异常?

    windbg - 如何将windbg命令重定向到文件而不在windbg控制台上回显输出?

    debugging - Windbg,如何检查内存段权限?

    c++ - boost::signals2 和异常处理

    c++仅分配函数调用返回的结构的一部分