如何检查不在图像列表中但出现在!DumpDomain输出中的.NET程序集的版本?

mar*_*ark 3 windbg

鉴于:

0:000> lmm *day*
start             end                 module name
0:000> .shell -i- -ci "!DumpDomain" findstr /i "day"
Assembly:           0000005fa3efdbe0 [C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mobilewebservice\390f679a\951c08b4\assembly\dl3\95cd4f84\7081b1ad_ccc8d101\Dayforce.Common.dll]
00007ff7b82c8ff8            C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mobilewebservice\390f679a\951c08b4\assembly\dl3\95cd4f84\7081b1ad_ccc8d101\Dayforce.Common.dll
...
Run Code Online (Sandbox Code Playgroud)

(有很多)

关键是可以!DumpDomain识别Dayforce.Common.dll程序集的存在,但lm不能识别。

我依靠lmvm获得程序集的版本。但是在这里我感到困惑:

  1. 首先怎么lm看不到加载的程序集?
  2. 在这种情况下,如何获取程序集的版本?

请注意,检查托管堆栈会确认程序集已加载,只是它们从映像列表中丢失了。

Tho*_*ler 5

TLDR:.imgscan /l扫描MZ标头并加载模块信息。然后再试lm一次。


在我的应用程序中,我看不到任何程序集都由列出lm。这似乎是一种默认行为,因为我对应用程序中的那些程序集没有做任何特别的事情。尝试找到特定的失败:

0:009> .symfix d:\debug\symbols
0:009> .reload
Reloading current modules
......................................
0:009> lm m Test*
start    end        module name
Run Code Online (Sandbox Code Playgroud)

但是,!DumpDomain列出它是:

0:009> !DumpDomain
[...]
Assembly:           00737f20 [C:\Program Files (x86)\...\TestAdore.dll]
ClassLoader:        0071dd98
SecurityDescriptor: 00729ba8
  Module Name
00377440    C:\Program Files (x86)\...\TestAdore.dll
Run Code Online (Sandbox Code Playgroud)

通过使用.imgscan /lI,我能够找到DLL的MZ头并加载模块信息:

0:009> .imgscan /l
[...]
MZ at 003a0000, prot 00000002, type 01000000 - size e000
  Name: TestAdore.dll
  Loaded TestAdore.dll module
Run Code Online (Sandbox Code Playgroud)

之后,该模块将出现在lm列表中:

0:009> lm m Test*
start    end        module name
003a0000 003ae000   TestAdore   (deferred) 
Run Code Online (Sandbox Code Playgroud)

并可以查询版本信息

0:009> lm vm TestAdore
start    end        module name
003a0000 003ae000   TestAdore   (deferred)             
    Image path: TestAdore.dll
    Image name: TestAdore.dll
    Has CLR image header, track-debug-data flag not set
    Timestamp:        Sun Jul 26 23:13:53 2015 (55B54D91)
    File version:     1.0.0.0
[...]
Run Code Online (Sandbox Code Playgroud)