我读了一些文章和msdn和博客,但有一些问题
为什么我们必须在与安装钩子过程的应用程序分开的DLL中放置一个全局钩子过程
和全局钩子和键盘有什么不同(我没有单独的dll写密钥loge)? key loger如何在没有单独的dll的情况下拦截所有应用程序键盘消息?
最终
全局钩子的dll代码是什么?
请为编写带有详细信息的全局钩子提供一些步骤
答案 0 :(得分:3)
基本上有两种方法可以全局捕获击键(键盘记录器可以使用其中任何一种):
使用全局键盘钩。 如上所述,此方法需要位于单独DLL文件中的HookProcedure。这是如何捕获击键的正确方法,因为只在每个按键上调用您的函数。
调用WinAPI函数GetKeyboardState。此方法不需要单独的DLL文件,但有一个很大的缺点。该函数仅返回键盘的实际状态。有必要在一个无限循环(可能在单独的线程中,但不一定)中调用它,并有一点睡眠时间来限制所有键击。
这会导致CPU使用率增加。我不建议你使用这种技术。此外,具有良好启发式的防病毒软件会将此类代码视为键盘记录程序。
没有DLL的键盘记录程序可能使用第二种方法或动态生成DLL。