1
TL; DR爲什麼WinDBG在轉儲中顯示不匹配的FileVersion?
爲什麼WinDBG的lmv
顯示版本二信息字段(當沒有其他工具,我知道做到這一點),以及在何種情況下可以在這些領域有什麼不同?
背景:我有一個活的轉儲(從死鎖)我們的應用程序。符號加載正確,我能夠追溯到微軟的pdm.dll
(用於我們的vbscript引擎的「Process Debug Manager」)的死鎖。
我當時就想檢查此DLL的版本在會議上在生產現場裝:
0:000> lmv m pdm
start end module name
51860000 518b8000 pdm # (pdb symbols) d:\symcache\pdm.pdb\7BE601EDE9234816B72B49DA4A25DF042\pdm.pdb
Loaded symbol image file: pdm.dll
Image path: C:\Program Files (x86)\Common Files\Microsoft Shared\VS7DEBUG\pdm.dll
Image name: pdm.dll
Timestamp: Tue Jul 29 16:46:11 2008 (488F2D33)
CheckSum: 000663E0
ImageSize: 00058000
?? File version: 9.0.30729.1
?? Product version: 9.0.30729.1
File flags: 0 (Mask 3F)
File OS: 4 Unknown Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® Visual Studio .NET
InternalName: pdm.dll
OriginalFilename: pdm.dll
?? ProductVersion: 7.10.3077
?? FileVersion: 7.10.3077
FileDescription: Process Debug Manager
LegalCopyright: Copyright© Microsoft Corporation. All rights reserved.
正如你可以看到,文件和產品版本出現了兩次,但都是不匹配的轉儲!
當我交叉檢查我的機器上(顯然,看到的時間戳和校驗!)的運行IEXPLORE進程相同的文件:
0:043> lmv m pdm
start end module name
3efa0000 3eff8000 pdm (pdb symbols) c:\windows\symbols\martin-cache\pdm.pdb\415D0A165EB24613BC01CE516512062C2\pdm.pdb
Loaded symbol image file: C:\Program Files (x86)\Internet Explorer\pdm.dll
Image path: C:\Program Files (x86)\Internet Explorer\pdm.dll
Image name: pdm.dll
Timestamp: Tue Jul 29 16:46:11 2008 (488F2D33)
CheckSum: 000663E0
ImageSize: 00058000
File version: 9.0.30729.1
Product version: 9.0.30729.1
File flags: 0 (Mask 3F)
File OS: 4 Unknown Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® Visual Studio® 2008
InternalName: pdm.dll
OriginalFilename: pdm.dll
ProductVersion: 9.0.30729.1
FileVersion: 9.0.30729.1 built by: SP
FileDescription: Process Debug Manager
LegalCopyright: © Microsoft Corporation. All rights reserved.
版本的相關信息匹配起來。
啊。所以第一個版本來自'FILEVERSION',第二個版本來自'BLOCK「StringFileInfo」' - 'VALUE「FileVersion」'。我有點不知所措。 : -/ –
至於篡改 - 你可以篡改* CheckSum *? (因爲這也是相同的。) –
我的意思是說,也許一個是另一個的副本,因此校驗和相等,大小和時間相同,然後將其中一個版本與ProductName一起更改。 –