0

次のコード スニペットでは、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 ベースのコード署名検証がターゲット システムで利用可能であることを (レジストリ キーなどの存在によって) 知る別の方法はありますか? (インストール中にこれを確認する必要があります...)

ありがとう :)

4

1 に答える 1

-1
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を参照できる他のものです。

于 2016-04-06T11:26:27.853 に答える