随便写点什么吧——关于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:\symbol\ms_symbol\hal.pdb\F3383972E53BCF4212FB0F57D47870AF1\hal.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 啥的改一下这个脚本,如果有时间,其实可以直接改一下这个脚本,

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

posted @   穷到底  阅读(354)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示