別のバイナリ「helper.dll」を使用するバイナリ「api.dll」があります。デジタル署名を使用して各 DLL の信頼性を検証したいのですが、正しい方法がわかりません。コンテキストとして、DLL は Visual Studio 2010 を使用してビルドされており、[依存関係] タブを介してリンクされています。リンクはスタブの helper.lib を介して行われるため、明示的LoadLibrary
に api.dll コードを呼び出しません。これに関する問題の一部は、 helper.dll がどこから読み込まれるのか正確にわからないことです。私の最初の考えは次のとおりです。
- 現在のプロセスへのハンドルを取得する
- ロードされたすべてのモジュールを列挙する
- 「helper.dll」という名前のものを見つけ (この情報が enum モジュール API を介して利用可能な場合)、次の ようなものを使用して署名を検証します。
これが最善の方法ですか?
第二に、デジタル署名/証明書に関する私のやや漠然とした理解に基づいて、検証には認証局への接続が必要であるか、証明書がマシンで信頼できるものとして既にリストされている必要があるようです。外部接続が嫌われたり、明示的に許可されていない場合、これは通常どのように処理されますか? アプリケーションと一緒に「インストール」されるものでしょうか? または、そのような場合、安全性の低い別の検証方法が必要になりますか?