在以下代码片段中,WinVerifyTrust为系统上加载并运行的内核驱动程序文件(.sys)返回CERT_E_UNTRUSTEDROOT:
GUID guidAction = DRIVER_ACTION_VERIFY;
WINTRUST_FILE_INFO sWintrustFileInfo = { 0 };
WINTRUST_DATA sWintrustData = { 0 };
HRESULT hr = 0;
sWintrustFileInfo.cbStruct = sizeof(WINTRUST_FILE_INFO);
sWintrustFileInfo.pcwszFilePath = argv[1];
sWintrustFileInfo.hFile = NULL;
sWintrustData.cbStruct = sizeof(WINTRUST_DATA);
sWintrustData.dwUIChoice = WTD_UI_NONE;
sWintrustData.fdwRevocationChecks = WTD_REVOKE_NONE;
sWintrustData.dwUnionChoice = WTD_CHOICE_FILE;
sWintrustData.pFile = &sWintrustFileInfo;
sWintrustData.dwStateAction = WTD_STATEACTION_VERIFY;
hr = WinVerifyTrust((HWND)INVALID_HANDLE_VALUE, &guidAction, &sWintrustData);几个有趣的地方:-驱动程序使用SHA-256签署了有效的(购买的)证书。- KB3033929已安装在系统上(Win7/32) -从文件属性查看证书时,整个证书链显示为有效
我给WinVerifyTrust打错电话了吗?
另一个问题:有没有其他方法(通过注册表项或类似的东西)知道基于SHA-256的代码签名验证在目标系统上可用?(我需要在安装过程中对此进行验证...)
谢谢:)
发布于 2016-04-06 19:26:28
DRIVER_ACTION works good for WHQL afaik. Try
GUID WINTRUST_ACTION_GENERIC_VERIFY_V2下面是您可以参考http://gnomicbits.blogspot.in/2016/03/how-to-verify-pe-digital-signature.html的其他内容
https://stackoverflow.com/questions/35193464
复制相似问题