MFC -- 键盘全局HOOK
Posted web安全工具库
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC -- 键盘全局HOOK相关的知识,希望对你有一定的参考价值。
一、新建一个DLL动态链接库
二、创建一个被exe文件调用的函数
BOOL sethook()
hk = SetWindowsHookEx(WH_KEYBOARD, //hook类型,键盘hook
KeyboardProc, //回调函数
hM, //第三方的注入dll,全局hook使用,句柄通过主函数获取
0);//线程id,填0表示hook所有程序
if (hk == NULL)//如果创建失败,弹出信息框
return FALSE;
return TRUE;
三、创建回调函数
HMODULE hM;
HHOOK hk;
//键盘hook的回调函数
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
char buf[256];
if (wParam >= 'A' && wParam <= 'Z')
sprintf_s(buf, "%c 被按下", wParam);
OutputDebugStringA(buf);
//钩子执行完后执行该函数
return CallNextHookEx(hk, code, wParam, lParam);
四、通过主函数获取句柄
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
switch (ul_reason_for_call)
case DLL_PROCESS_ATTACH:
//dll被加载执行,初始化操作
hM = hModule;
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
//dll被释放时调用
break;
return TRUE;
五、将函数导出
1、右击项目--添加--新建项
2、添加def文件
3、导出函数
LIBRARY
EXPORTS
sethook
4、通过PE软件查看导出函数
六、exe文件调用dll文件函数
1、声明lib文件位置
#pragma comment(lib,"hookdll.lib")
2、声明被调用函数
BOOL sethook();
3、调用函数
void CkeybhookDlg::OnBnClickedHook()
BOOL re = sethook();
if (!re)//如果创建失败,弹出信息框
AfxMessageBox(L"HOOK失败");
return;
七、项目源码下载:
关注编程有你公众号:回复20220115
欢迎关注公众号:编程有你
欢迎关注视频号:之乎者也吧
以上是关于MFC -- 键盘全局HOOK的主要内容,如果未能解决你的问题,请参考以下文章