打造自己的键盘记录器

打造自己的键盘记录器

ID:11069366

大小:47.00 KB

页数:7页

时间:2018-07-09

打造自己的键盘记录器_第1页
打造自己的键盘记录器_第2页
打造自己的键盘记录器_第3页
打造自己的键盘记录器_第4页
打造自己的键盘记录器_第5页
资源描述:

《打造自己的键盘记录器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、打造自己的键盘记录器作者:zaroty偶破博:http://hi.badu.com/zaroty说起键盘记录,想必很多朋友都用过网上流传的一些键盘记录软件吧,但是有没有想过自己写一个呢?也许你会想:会不会很复杂啊?我可以很负责的告诉你,写键盘记录是很简单的。你所需要的仅仅是懂得一些C语言的DLL编写,剩下的就是仔细的研究下MSDN上面的函数和一些耐心啦。下面就让我这小菜带大家来写属于自己的键盘记录器吧。说道键盘记录,免不掉要说一下Windows的HOOK函数。通过搜索引擎,我们会得到好多关于hook的定义,这里就用比较通俗易懂的话来说下什么是hook

2、。Hook可以说就是一个间谍,假如你想要给你远在马来西亚的女朋友写一封信,你可以直接把写好的信投到邮局,然后由邮递员送到你女朋友手里。但是当hook这个阴险的间谍出现时,事情就完全发生了变化。Hook会赶在邮递员把你的信送出去之前进行一些你并不想要的操作,这样一来,你的信可能被修改、复制,甚至直接销毁。那么按键消息也就像你的那封信一样,当在系统中安装了hook之后,就可以截取所有的键盘消息,从而对这些消息进行操作,还可以决定是否继续将这个消息传送到另外一个正在等候的程序。通过上面简单的比喻,我想大家应该对hook有了一个简单的认识,下面我们来说下ho

3、ok的分类以及一些具体的使用。Hook可以分为下面几种,不同类型的钩子有着不同的作用:WH_CALLWNDPROCWH_CALLWNDPROCRETWH_CBTWH_DEBUGWH_KEYBOARD_LLWH_MOUSEWH_MOUSE_LLWH_MSGFILTERWH_FOREGROUNDIDLEWH_GETMESSAGEWH_JOURNALPLAYBACKWH_JOURNALRECORDWH_KEYBOARDWH_SHELLWH_SYSMSGFILTER这么多的钩子类型,我们在这一不去进行一一的解释,仅仅拿出我们需要的两个来说一下,其他的大家可以

4、参阅MSDN上的SetWindowsHookEx函数的定义。这里与我们键盘记录有关系的两个钩子类型是:WH_KEYBOARD和WH_KEYBOARD_LL,这两个都是键盘钩子,他们有什么区别呢?MSDN上面说的是WH_KEYBOARD会在应用程序调用GetMessage或者PeekMessage函数并且有键盘消息(按下或者释放)的时候会调用相应的函数进行处理,WH_KEYBOARD_LL这个类型是只要有键盘输入事件的发生,它都会将键盘消息传给相应函数,而在我自己试验的时候发现WH_KEYBOARD类型的钩子只记录本程序的按键消息,对发送到其他程序的按

5、键消息不予以响应。所以,下面我们就用WH_KEYBOARD_LL这个类型的底层键盘钩子,来记录计算机上所有的键盘输入。下面我们看一下钩子使用:首先我们要定义一个钩子的回调函数,这样当相应的系统消息传送给钩子的时候就会由这个回调函数进行处理。回调函数书写必须按照下面的语法:LRESULTCALLBACKHookProc(intnCode,WPARAMwParam,LPARAMlParam);HookProc是你自己定义的名字。nCode参数是Hook代码,Hook子程使用这个参数来确定任务。这个参数的值依赖于Hook类型,每一种Hook都有自己的Hoo

6、k代码特征字符集。wParam和lParam参数的值依赖于Hook代码,但是它们的典型值是包含了关于发送或者接收消息的信息。我们这里用到的是WH_KEYBOARD_LL对应的回调函数LowLevelKeyboardProc,他的定义如下:LRESULTCALLBACKLowLevelKeyboardProc(intnCode,//hookcodeWPARAMwParam,//messageidentifierLPARAMlParam//messagedata);这里的wParam指的是键盘消息的标识,它的值可以是WM_KEYDOWN,WM_KEYUP

7、,WM_SYSKEYDOWN,或者WM_SYSKEYUP.而lParam则指向一个KBDLLHOOKSTRUCT结构体,下面是KBDLLHOOKSTRUCT结构体的定义:typedefstructtagKBDLLHOOKSTRUCT{DWORDvkCode; //virtual-keyDWORDscanCode;DWORDflags;DWORDtime;ULONG_PTRdwExtraInfo;}KBDLLHOOKSTRUCT,*PKBDLLHOOKSTRUCT;知道了上面的这些,我们就可以开始写我们的回调函数了:LRESULTCALLBACKLow

8、LevelKeyboardProc(intnCode,WPARAMwParam,LPARAMlParam){

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。