繁体   English   中英

以编程方式验证已签名的dll的C ++

[英]Programmatically verify signed dll's C++

我有一个签名的DLL,并希望在我使用它之前验证它的签名。 我的应用程序是由C ++编写的。 如何以编程方式获取dll的签名?

您可以使用WinVerifyTrust功能
Dlls和PE几乎相同,除了头部有2到3个字节的差异。
这里有一个完整的代码示例(也适用于dll)。

MSDN推荐的方法是运行SignTool,这是CryptoAPI的一部分 -

SignTool返回指示签名检查结果的命令行文本。 此外,SignTool返回退出代码为零以便成功执行,一个退出代码执行失败,两个退出代码执行完成并带有警告。

有关详细信息,请参阅使用SignTool验证文件签名

其中一个选项是CAPICOM库 ,它可以从Microsoft的32位可再发行版中获得。 验证码可以很简单:

CComPtr<Capicom::ISignedCode> pSignedCode;
ATLENSURE_SUCCEEDED(pSignedCode.CoCreateInstance(__uuidof(Capicom::SignedCode)));
ATLENSURE_SUCCEEDED(pSignedCode->put_FileName(CComBSTR(pszPath)));
HRESULT nVerifyResult = pSignedCode->Verify(ATL_VARIANT_FALSE);

您还可以轻松获取签名者,证书等其他信息。

如果您不想使用CAPICOM,MSDN会上面的代码段中使用的SignedCode建议备用选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM