web-dev-qa-db-ja.com

タイムアウト期限切れによるキーボードフックの登録解除

キーロガーから保護したいWindows用のパスワードマネージャーを書いています。 キーボードフックのタイムアウトは5000ミリ秒 があります。

フックプロシージャは、次のレジストリキーのLowLevelHooksTimeout値で指定されたデータエントリよりも短い時間でメッセージを処理する必要があります。

HKEY_CURRENT_USER\Control Panel\Desktop

値はミリ秒単位です。

(そのレジストリキーのデフォルト値は5000です)

パスワードマネージャーを管理者として実行している場合、すべてのプログラムを一時停止し、キーの入力をシミュレートし、5秒待ってから、Windowsによってすべてのキーボードフックが無効になっていることを確認できますか?

nhookWindowsHookEx を使用してすべてのフックを登録解除する方法が見つかりません。これは、私が持っていないハンドルが必要になるためです。これが、タイムアウトによって登録を解除する手段を取っている理由です。

1
Thomas Weller

この仮定が危険である理由を私が見ることができる3つの理由があります。

  1. フックは、Windows 7以降でのみ削除されます。これはおそらくあなたの懸念の中で最も少ないですが、言及する価値があります。
  2. フックはサイレントに削除され、アプリケーションはこれらのアクションが発生したか成功したかを知る方法がありません。

したがって、仮定が正しい場合でも、フックが削除されたことを知る方法はありません。つまり、それらのすべてが削除されたわけではないと想定する必要があります。

  1. これは、SetWindowsHookExを使用して登録されたキーボードフックにのみ適用されます

これはより差し迫った問題です。多くのマルウェアは、組み込みのフックAPIを使用しません。 OSに登録されない独自のフックを作成します。または、キーロガーのさらに低いレベルでは、独自のシステムレベルのドライバーをフックまたはインストールします。これも、オペレーティングシステムに登録されません。

すべてのプログラムを一時停止することは可能ですが、キーロガーがインストールされているサービスを一時停止できない場合があります。キーロガーを防ごうとするのは貴族の貴族だと私は思うが、それはあなたの責任だとは思わない。

5
RoraΖ