为什么我们必须将全局钩子过程放在单独的 DLL 中

发布于 2024-09-29 13:27:31 字数 228 浏览 1 评论 0原文

我读了一些文章、msdn 和博客,但有一些问题

为什么我们必须将全局钩子过程放置在与安装钩子过程的应用程序分开的 DLL 中

,与全局钩子和键盘记录器有什么不同(我在没有单独的 dll 的情况下编写键盘记录器)? 键盘记录器如何在没有单独的 dll 的情况下拦截所有应用程序键盘消息?

最后,

全局钩子的dll中的代码是什么?

请给出一些详细的编写全局钩子的步骤

i read some article and msdn and blog but have some question

why we must place a global hook procedure in a DLL separate from the application installing the hook procedure

and what is different from global hook and keyloger( i write key loge without separate dll)?
how key loger intercept all application keyboard message without separate dll?

finaly

what code is in dll for global hook ?

please give some step for writing global hook with detail

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

说不完的你爱 2024-10-06 13:27:31

基本上有两种方法可以全局捕获击键(键盘记录器可以使用其中任何一种):

  1. 使用全局键盘挂钩。
    如上所述,此方法需要位于单独的 DLL 文件中的 HookProcedure。这是捕获击键的正确方法,因为仅在每次按键时调用您的函数。

    这篇文章可能有用:http://www.codeproject.com/KB/ DLL/keyboardhook.aspx

  2. 调用WinAPI函数GetKeyboardState。这种方法不需要单独的DLL文件,但有一个很大的缺点。该函数仅返回键盘的实际状态。有必要在无限循环中调用它(可能在单独的线程中,但不一定),并有一点睡眠时间来捕获所有击键。

    这会导致 CPU 使用率增加。我不建议您使用此技术。另外,具有良好启发式的防病毒软件会将此类代码视为键盘记录器。

没有 DLL 的键盘记录器可能使用第二种方法或动态生成 DLL。

Basically there are two ways how to capture keystrokes globally (the keylogger can use any of them):

  1. Using global keyboard hook.
    This method needs a HookProcedure located in seperate DLL file as you stated above. This is the right way how to capture keystrokes, because your function is called only on each keypress.

    This article could be useful: http://www.codeproject.com/KB/DLL/keyboardhook.aspx

  2. Calling WinAPI function GetKeyboardState. This method doesn't require separate DLL file, but have a big drawback. The function returns only actual state of keyboard. It is necessary to call it in an infinite loop (probably in separate thread, but not necessarily) with a little sleep time to caputre all keystrokes.

    This results in increased CPU usage. I don't recommend you to use this technique. Also an antivirus software with good heuristics will consider such code as keylogger.

A keylogger without DLL probably uses the second approach or generates the DLL on the fly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文