[英]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.