システムで「ベンチマーク」をクリーンな状態で実行し、キーロガーをインストールして、ベンチマークを繰り返すことにより、システム上のキーロガーの存在を検出できるかどうかを確認したかったのです。キーロガーを正しく実行するにはリソースを消費する必要があり、ベンチマークスコアが低くなるという考えです。
コードでは、基本的に、win32APIを使用してSendMessage()とPostMessage()を呼び出してキーストロークをシミュレートする2つのwhileループを記述しました。一定時間ループを実行し、送信された成功したメッセージの数を記録します。
私は、キーロガーが測定可能な違いをもたらさないこと(結局のところ、デスクトップ上で実行されている「もの」がたくさんあり、キーロガーはあまり使用しないかもしれないと思っていました...)またはそれがそうなることを期待していましたわずかに少ない数になります。
そして、それは主に' SendMessage() '呼び出しの場合に私が見たものです。
私が理解していないのは、私のベンチマークがPostMessage()への呼び出しの数の劇的な増加を示しているということです
キーロガーをインストールする前に、多くの実行を平均すると、1秒あたり約10kのPostMessage()が表示されます。キーロガーをインストールした後、PostMessage()への1秒あたりの呼び出しが約25kになりました。
それは私には意味がありません。
PostMessageの理解が正しければ、Windowsメッセージがプロセスのメッセージキューに追加され、実行が再開されます(SendMessageは、プロセスがメッセージを処理するまで待機してから戻ります)。PostMessageはSendMessageよりも高速に実行され、メッセージキューがいっぱいになると一部のメッセージが失われる可能性があると思いますが、私の限られた理解では、キーロガーがパフォーマンスを向上させる方法を理解するのに役立ちません。 。
コードはとてもシンプルな気がします。キーストロークとして登録され(メモ帳に送信しています)、キーロガーがログに記録していることを確認できます。
誰かが私に欠けているものを説明できますか?
キーロガーはどのようにパフォーマンスを向上させることができますか?!
更新
ベンチマークを10回実行し、結果を平均しています。
キーロガーを一時停止すると(まだインストールされているが、ログには記録されないように)、高い結果が得られました。キーロガーをアンインストールしてマシンを再起動した後、平均10回の実行は1秒あたり9.9kになりました。私の元の結果と非常に一致しています。
アンインストールを完了するには、マシンを再起動する必要がありました。