钩子(HOOK)用于键盘记录还是挺多的,而且是DLL形式 首先,大家可能会有疑问:EXE不能键盘记录么? 答案是可以的,但是大家也知道,EXE形成的是进程,是独立的,系统中有很多进程,而进程间是互不干扰的,所以用EXE来做键盘记录就要突破进程间的阻碍,麻烦,不现实。 微软提供了一种技术,那就是钩子,我的理解就是钩子类似于回调,只是这个回调会在目标接受到消息之前进行处理(众所周知windows是消息事件驱动的系统),钩子可以截取自己所感兴趣的东西,并拥有当前进程的所有权限。 刚才说到了进程间独立,而我们获取信息是相对于操作系统,也就是说所有进程接收到的消息我们都能够获取,所以就采用DLL啦,貌似DLL可以作为全局共享而存在(不知道对不对?),下面入正题,具体步骤。 WINUSERAPI 这个函数就是安装钩子啦,{dy}个参数作为键盘记录时为WH_KEYBOARD,第二个参数为处理消息的函数地址,第三个参数是当前DLL的模块句柄,第四个参数置0即可。 其中第二个参数的函数原型为 LRESULT CALLBACK KeyboardProc( 这样只要在KeyboardProc中写入我们处理消息的代码就可以了,如果要继续传递消息记得使用CallNextHookEx函数,SetWindowsHookEx的返回值是一个钩子句柄,不再使用时记得调用UnhookWindowsHookEx把钩子卸载。 其实SetWindowsHookEx不仅仅局限于键盘记录,Gh0st的代码中就没有使用WH_KEYBOARD来进行键盘记录,而是WH_GETMESSAGE,这样能够截取中文信息。而{dy}个参数决定了你的回调函数将得到什么样的信息,设置好之后操作系统就会把你想得到的信息在发送给目标程序之前传递给你设置的函数。 这种技术貌似国外早就玩腻了,哎,还需要提高…… 基本上,写一个EXE一个DLL,EXE加载DLL,DLL中调用SetWindowsHookEx就没啥了。 |