• 随便写点什么吧——关于dmp的问题,只有dmp,没有目标系统环境的情况下,下载dump中对应的模块的方法


    情况是这样的。

    昨天,我得到了一个dump,这个dump是个full dump,

    是一个系统蓝屏后的完全内存转储。

    产品怀疑是我们的驱动导致出现了问题,

    但是我们就不这么认为,所以就开始分析dump,

    经过简单地查看调用栈,我们初步确认不是我们的问题。

    但是如果要细挖细节的话,问题就来了,

    我们只有dmp,没有对应的系统文件啊,

    更可恶的是,实际上dmp里面没有记录目标系统文件的版本,

    即,只记录了ntoskrnl、hal等模块的一些普通信息,如时间戳等,

    但是没有记录属于哪个系统版本,如 18363、18362 等,

    这里就导致我想拿到目标的系统文件非常困难。

    怎么办,问题,还要解决,

    突然我想到了一个方法。

    微软其实是支持系统文件下载的,

    只是下载路径需要自己拼凑出来,

    而很巧,拼路径需要的三个关键信息,dmp 里面都给出了。

    这里提供一段js脚本,来计算下载地址,计算出来的地址,其实是可以下载到文件的,而且是有效的。

    1 var fileName = "PSHED.dll";
    2 var timestamp = 0xB21F9DDA;
    3 var virtualSize = 0x0001A000;
    4 var vtimes = timestamp.toString(16).toUpperCase();
    5 var vsizes = virtualSize.toString(16).toLowerCase();
    6 var fileId = ('0000000' + vtimes ).slice(-8) + vsizes;
    7 var url = 'https://msdl.microsoft.com/download/symbols/' + fileName + '/' + fileId + '/' + fileName;
    8 url;

    关键元素其实就三个

    filename :目标文件名

    timestamp : 目标文件时间戳(这个时间戳是编译出来之后记录在文件中的那个时间戳,可能不是真正的时间戳,但是不重要)

    virtualsize : 文件的体积

    windbg 里面得到的模块信息如下,

    10: kd> lmvm hal
    Browse full module list
    start             end                 module name
    fffff805`0e75c000 fffff805`0e800000   hal        (pdb symbols)          d:symbolms_symbolhal.pdbF3383972E53BCF4212FB0F57D47870AF1hal.pdb
        Loaded symbol image file: hal.dll
        Image path: hal.dll
        Image name: hal.dll
        Browse all global symbols  functions  data
        Image was built with /Brepro flag.
        Timestamp:        5C190592 (This is a reproducible build file hash, not a timestamp)
        CheckSum:         0009F7AA
        ImageSize:        000A4000
        Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
        Information from resource tables:

    挺惨的,啥都没有,

    目标文件名,就是 hal.dll

    目标时间戳是 Timestamp

    文件体积是 ImageSize

    都提供了,然后通过脚本可以算出来一个下载的路径,

    我是很懒,所以没有用C#、Py 啥的改一下这个脚本,如果有时间,其实可以直接改一下这个脚本,

    根据模块信息直接下载目标文件。

  • 相关阅读:
    2101 可达性统计
    POJ1179 Polygon
    POJ1015 Jury Compromise
    读入输出优化
    队列优化dijsktra(SPFA)的玄学优化
    5104 I-country
    CH5102 Mobile Service
    P1005 矩阵取数游戏
    (模板)线段树2
    POJ3666 Making the Grade
  • 原文地址:https://www.cnblogs.com/suanguade/p/13365704.html
Copyright © 2020-2023  润新知