gpt4 book ai didi

com - 如何检查PE文件(DLL,EXE)是否为COM组件?

转载 作者:行者123 更新时间:2023-12-01 06:48:10 25 4
gpt4 key购买 nike

我需要编写一个 stub 模块,当给定一个 PE (DLL/EXE) 作为输入时,它将确定它是普通的 Win32 DLL/EXE 还是 COM DLL/EXE。我需要以编程方式确定这一点。

是否有任何用于此目的的 Windows API?

最佳答案

我怀疑这很难以接近 100% 的准确率来实现。不过有些想法:

  • COM DLL 将导出 DllRegisterServer 和 DllUnregisterServer 等函数。您可以使用 LoadLibrary() 加载 Dll,然后使用 GetProcAddress() 检查这些函数是否存在。如果他们在那里,那么它很可能是一个 COM dll。
  • 一个普通的 win32 Dll 将导出 DllMain。您可以使用相同的技术进行检查。如果你找到它那么它很可能是它的win32。
  • 我不知道有一种方法可以发现 exe 是否是 COM 服务器。使用 ATL 编写的服务器通常会在其资源表中嵌入一个注册脚本,但并非必须如此。而且你不需要使用 ATL 来编写 COM 服务器。使用“registry-less com”的服务同样会有一个嵌入式 list 。您可以扫描注册表(在 HKLM/Classes/Software/下方)以查看 exe 是否已注册,但可能是该 exe 正在使用无注册表 com 或尚未注册。

  • 希望有帮助。

    关于com - 如何检查PE文件(DLL,EXE)是否为COM组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2681313/

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