キーロガーから保護したいWindows用のパスワードマネージャーを書いています。 キーボードフックのタイムアウトは5000ミリ秒 があります。
フックプロシージャは、次のレジストリキーのLowLevelHooksTimeout値で指定されたデータエントリよりも短い時間でメッセージを処理する必要があります。
HKEY_CURRENT_USER\Control Panel\Desktop
値はミリ秒単位です。
(そのレジストリキーのデフォルト値は5000です)
パスワードマネージャーを管理者として実行している場合、すべてのプログラムを一時停止し、キーの入力をシミュレートし、5秒待ってから、Windowsによってすべてのキーボードフックが無効になっていることを確認できますか?
nhookWindowsHookEx を使用してすべてのフックを登録解除する方法が見つかりません。これは、私が持っていないハンドルが必要になるためです。これが、タイムアウトによって登録を解除する手段を取っている理由です。
この仮定が危険である理由を私が見ることができる3つの理由があります。
したがって、仮定が正しい場合でも、フックが削除されたことを知る方法はありません。つまり、それらのすべてが削除されたわけではないと想定する必要があります。
SetWindowsHookEx
を使用して登録されたキーボードフックにのみ適用されますこれはより差し迫った問題です。多くのマルウェアは、組み込みのフックAPIを使用しません。 OSに登録されない独自のフックを作成します。または、キーロガーのさらに低いレベルでは、独自のシステムレベルのドライバーをフックまたはインストールします。これも、オペレーティングシステムに登録されません。
すべてのプログラムを一時停止することは可能ですが、キーロガーがインストールされているサービスを一時停止できない場合があります。キーロガーを防ごうとするのは貴族の貴族だと私は思うが、それはあなたの責任だとは思わない。