WinDbg中从应用程序完整内存转储获取文件句柄对应路径
获取用户态内存转储中文件句柄对应的实际路径
针对你用procdump -ma abc.exe生成的用户态完整内存转储,以下几种方法可以尝试获取句柄000000000000161c对应的文件路径:
通过
!handle获取对象指针,再用!devobj解析- 执行命令:
!handle 161c 4(这里的4参数用于输出对象的内存地址),输出中会包含类似Object: 00000000xxxxxxxxxx的字段。 - 对拿到的对象地址执行:
!devobj 00000000xxxxxxxxxx,该命令会解析设备对象关联的文件信息,通常能显示完整的文件路径。
- 执行命令:
使用
!fileobj命令直接解析文件对象- 同样先通过
!handle 161c 4拿到文件对象的内存地址。 - 执行命令:
!fileobj 00000000xxxxxxxxxx,这个命令会专门解析文件对象结构,其中FileName字段会显示对应的文件路径。
- 同样先通过
手动解析文件对象结构(命令失效时备用)
- 用
dt nt!_FILE_OBJECT 00000000xxxxxxxxxx查看文件对象的结构布局,找到FileName字段的偏移(不同Windows版本偏移可能不同)。 - 针对
FileName对应的UNICODE_STRING结构,执行dt nt!_UNICODE_STRING [对象地址+偏移],即可读取到对应的文件路径字符串。
- 用
注意:用户态内存转储虽然没有完整的内核内存数据,但-ma参数生成的完整转储包含了进程关联的内核对象快照,大部分情况下上述方法都能获取到路径。
内容的提问来源于stack exchange,提问作者Enki
相关产品推荐
相关产品推荐

