3

如何在不查看代码的情况下区分 .NET DLL 和 C++ dll。从任何 PE 文件浏览器查看 DLL 后,我们可以通过查看导出表或 DLL 的其他部分来识别它吗?

4

2 回答 2

1

你也许可以使用corflags

对于 .NET c# DLL,我得到

Microsoft (R) .NET Framework CorFlags 转换工具。版本 4.0.30319.1 版权所有 (c) Microsoft Corporation。版权所有。

版本:v4.0.30319 CLR 标头:2.5 PE:PE32 CorFlags:1 ILONLY:1 32BIT:0 签名:0

对于 C++ DLL,我得到

corflags:错误 CF008:指定的文件没有有效的托管标头

**** 更新 ****

我可能误解了这个问题。这是一个关于类似问题的好问题。 如何测试 Windows DLL 文件以确定它是 32 位还是 64 位?

于 2012-05-17T11:47:38.907 回答
0

事实上,通过查看 Image 文件可以清楚地表明这一点,并由Portable Executable format specification记录。如果 Directory[IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR] 存在(不是 EMPTY),则图像是托管的 (.NET),否则图像是非托管的。

于 2012-07-02T15:54:06.770 回答