我有一个签名的 dll 并想在使用它之前验证它的签名。我的应用程序是由 C++ 编写的。如何以编程方式获取 dll 的签名?
问问题
5442 次
3 回答
6
您可以使用WinVerifyTrust 功能。
除了头部有 2 到 3 个字节的差异外,DLL 和 PE 几乎相同。
完整的代码示例在这里(也适用于 dll)。
于 2012-08-26T07:41:11.143 回答
0
MSDN 推荐的方法是运行属于 CryptoAPI 的 SignTool -
SignTool 返回说明签名检查结果的命令行文本。此外,SignTool 返回一个退出代码为零表示成功执行,一个表示执行失败,两个表示执行完成但出现警告。
有关详细信息,请参阅使用 SignTool 验证文件签名。
于 2012-08-26T07:46:07.457 回答
0
选项之一是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
于 2012-08-26T07:50:09.843 回答