gpt4 book ai didi

c++ - 检查 DLL 是否已签名 C++

转载 作者:可可西里 更新时间:2023-11-01 09:19:18 25 4
gpt4 key购买 nike

我正在尝试根据文件路径检查 DLL 是否已签名。我看到使用 WinVerifyTrust 已经存在针对此类问题的解决方案,但是,当我尝试根据“C:\Windows\System32\kernel32.dll”检查它时,它说:“文件“C:\Windows\System32\kernel32.dll"未签名。"虽然 kernel32 应该是一个签名的 dll。我在 Windows 7 上,仅供引用。

这是我调用的函数的源代码:https://msdn.microsoft.com/en-us/library/windows/desktop/aa382384(v=vs.85).aspx

如何修复该功能?

最佳答案

是的 WinVerifyTrust 是正确使用的函数,但您必须准备调用它两次。

首先你用WTD_CHOICE_FILE调用它,如果成功,那么你就完成了。如果没有,您必须使用 WTD_CHOICE_CATALOG (CryptCATAdminCalcHashFromFileHandle + CryptCATAdminEnumCatalogFromHash + CryptCATCatalogInfoFromContext) 再次调用它,因为某些 Windows 文件会不要嵌入证书信息(尤其是非 PE 文件)。 (您也可以尝试 find the catalog info first 来避免调用它两次,但我认为这会比较慢)

Sysinternals 论坛上有各种主题(thisthis)也许是解决与此相关问题的最佳资源。

关于c++ - 检查 DLL 是否已签名 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45181009/

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