debugging WinDbg|应用程序内存完全转储-显示文件句柄的文件路径

q9rjltbz  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(467)

我用procdump -ma abc.exe创建了一个应用程序的内存转储。应用程序访问各种文件。
我运行!handle 0 f FILE并获得了超过100个文件句柄。当我得到一个特定的句柄地址时,我运行以下命令!handle 000000000000161c f,结果是:

0:000> !handle 000000000000161c f
Handle 000000000000161c
  Type          File
  Attributes    0
  GrantedAccess 0x12019f:
         ReadControl,Synch
         Read/List,Write/Add,Append/SubDir/CreatePipe,ReadEA,WriteEA,ReadAttr,WriteAttr
  HandleCount   2
  PointerCount  65479
  No object specific information available

是否有机会检索实际的文件路径?就像这样:How get file path by handle in windbg?似乎只能在内核模式调试中工作。

lrl1mhuk

lrl1mhuk1#

对于事后调试(崩溃转储分析),没有办法,除非你有一个内核转储(我不能告诉你如何做到这一点)。Windows将关闭已终止进程的句柄。

!句柄与!Handleex

handleex on Github
!handle!handleex结合起来可以获得更好的信息。

.foreach /pS 1 /ps 1 (file {!handle 0 4 FILE}) { .echo Handle file; !handleex file; .echo }

示例输出

0:007> .foreach /pS 1 /ps 1 (file {!handle 0 4 FILE}) { .echo Handle file; !handleex file; .echo }
Handle 4c
Object Type: File
Handle Name: \Device\HarddiskVolume3\Users\T

Handle 8c
Object Type: File
Handle Name: \Device\HarddiskVolume3\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e

Handle b4
Object Type: File
Handle Name: \Device\HarddiskVolume3\Windows\System32\en-US\notepad.exe.mui

...

!handle与SysInternals Handle组合

您可以将!handle WinDbg命令和SysInternals Handle tool组合使用。
示例记事本调试会话:

:018> !handle 0 1 FILE
Handle 4c
  Type          File
Handle 8c
  Type          File
Handle b8
  Type          File
Handle 134
  Type          File
...

结合控制台的信息:

C:\...>handle -p notepad.exe | findstr 8C:
   8C: File          C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e

C:\...>handle -p notepad.exe | findstr B8:
   B8: File          C:\Windows\System32\en-US\notepad.exe.mui

自动化并不能很好地工作:

0:007> .printf "%d\n",$tpid
2168
0:007> .foreach /pS 1 /ps 1 (file {!handle 0 4 FILE}) { .shell C:\handle.exe -p 2168 | findstr file: }

这个过程似乎太慢了,需要太多的用户输入。

相关问题