gpt4 book ai didi

.net - 如何检测dll的类型? (COM、.NET、WIN32)

转载 作者:行者123 更新时间:2023-12-03 22:33:23 25 4
gpt4 key购买 nike

我需要处理一个文件夹中的许多 dll 和 exe 文件,并确定我正在处理的文件类型:.NET、COM、Win32 或其他一些外星生命形式。

我一直在尝试确定检测 DLL 类型的最简单方法,您对此有何看法:

  • COM dll
    => 我做了一个 LoadLibrary,然后 GetProcAddress 为“ DllRegisterServer ”。如果我得到一个有效的返回,它是一个 COM 文件。
  • .NET dll
    => 如果 dll 依赖于 MSCOREE.DLL 它总是一个.NET dll?
  • Win32 dll
    => 如果上述两个测试都失败了,它是一个 Win32 dll?

  • 当然必须有更好的方法来检测我们正在处理的 dll 类型。上面很笨重,对EXE文件不起作用?一定有我没有想到的其他方式。

    理想情况下,我希望能够让解析器确定文件是用什么编译器编译的,以及它使用了哪些功能,例如 MFC、Atl、STL 等......但我怀疑这在预反射时代是可能的吗?

    最佳答案

    您必须检查这些文件的 PE Header。所有 DLL 和可执行文件,Win32 和 .NET,都有一个 PE header 。

    An In-Depth Look into the Win32 Portable Executable File Format

    The .NET File Format

    Portable Executable

    关于.net - 如何检测dll的类型? (COM、.NET、WIN32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1420726/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com