4

署名されたdllがあり、使用する前にその署名を確認したいと思います。私のアプリケーションはC++で書かれています。プログラムでdllの署名を取得するにはどうすればよいですか?

4

3 に答える 3

6

WinVerifyTrust 関数を使用できます。
dll と PE は、ヘッダーの 2 ~ 3 バイトの違いを除いて、ほぼ同じです。
完全なコード例はこちら(dll にも適用可能) です。

于 2012-08-26T07:41:11.143 に答える
0

MSDN が推奨する方法は、CryptoAPI の一部である SignTool を実行することです -

SignTool は、署名チェックの結果を示すコマンドライン テキストを返します。さらに、SignTool は、実行が成功した場合は 0、実行が失敗した場合は 1、実行が警告付きで完了した場合は 2 の終了コードを返します。

詳細については、「 SignTool を使用してファイルの署名を検証する」を参照してください。

于 2012-08-26T07:46:07.457 に答える
0

オプションの 1 つは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 に答える