今天我正在调查 Microsoft DLL 的一个问题mscordacwks.dll
,它是 .NET 框架的一部分。我以前见过很多次,它总是一个普通的 PE 文件,这意味着它以魔法MZ
.
但是,今天的文件DCD
以 ASCII开头。我只能找到DCD
对反汇编代码中使用的 ELF 二进制文件的引用。但是,这大约DCD
是文件的前三个字节。
这是DLL的开始:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 44 43 44 01 38 01 EE 42 00 00 0A 00 50 41 33 30 DCD.8.îB....PA30
00000010 80 16 D7 D5 DE B1 9D 01 B0 4E 10 D0 C7 04 0C C4 €.×ÕÞ±..°N.ÐÇ..Ä
00000020 84 D6 08 01 42 01 04 00 88 FB 17 32 00 00 00 00 „Ö..B...ˆû.2....
00000030 00 00 08 7D DE D3 AA 02 A0 2C AA AA AA AA AA AA ...}ÞÓª. ,ªªªªªª
00000040 AA AA AA AA AA 1A AA AA AA 1A AA AA AA AA A1 01 ªªªªª.ªªª.ªªªª¡.
00000050 20 D2 A1 AA AA AA AA AA AA AA AA AA 22 2A AA AA Ò¡ªªªªªªªªª"*ªª
00000060 AA AA A1 8D 09 00 FF 3F 00 1C F4 3F 00 F0 FF 51 ªª¡...ÿ?..ô?.ðÿQ
00000070 00 F0 04 00 FF 01 74 50 66 80 88 D0 1A 00 68 68 .ð..ÿ.tPf€ˆÐ..hh
00000080 44 33 33 00 00 00 00 00 30 65 97 00 50 67 64 96 D33.....0e—.Pgd–
00000090 28 6E 66 90 71 23 8E E3 B8 26 E2 54 1A 62 12 23 (nf.q#Žã¸&âT.b.#
000000A0 12 8B C5 20 63 92 18 44 C4 71 1A 44 E2 C4 48 48 .‹Å c’.DÄq.DâÄHH
000000B0 1D CB 63 C7 6D EC 36 96 D8 21 26 91 10 93 88 EB .ËcÇmì6–Ø!&‘.“ˆë
000000C0 9A C4 B1 3C 76 0C 2A 31 22 B5 E3 C4 24 4E 24 A4 šÄ±<v.*1"µãÄ$N$¤
000000D0 31 00 88 53 23 71 EC 38 91 39 76 10 93 D8 42 E2 1.ˆS#qì8‘9v.“ØBâ
000000E0 98 D4 6E 6A 22 69 52 8B 91 04 47 3E BC 36 2D CD ˜Ônj"iR‹‘.G>¼6-Í
000000F0 E8 4A AB 6F 99 12 6D C3 B2 61 5E 86 8E 0E 43 A7 èJ«o™.mòa^†Ž.C§
通常,这些 DLL 的大小约为 1.7MB。但是,这个只有 3kB。我在文件夹里找到了C:\Windows\WinSxS\amd64_netfx-mscordacwks_b03f5f7f11d50a3a_10.0.17134.1_none_a06aa12b896d6ba9
那是什么文件格式?而且,如果答案很简单,Windows 是如何加载它的?
我发现了更多此类文件,最大大小为 51kB,似乎该PA30
部分也很常见。
关于我为何使用该文件的一些背景信息:mscordacwks.dll
适用MS
于 Microsoft、COR
.NET 框架、DAC
数据访问控制和WKS
工作站。在调试 .NET 应用程序时,正是该 DLL 可以提供有关 .NET 对象的内存布局等信息。通常它与 WinDbg 的 SOS 扩展一起使用。有时,开发者的 mscordacwks.dll 版本错误,这让 SOS 抱怨版本错误。所以我在我的电脑上查看是否能找到匹配的版本。