MFC -- 键盘全局HOOK

简介: MFC -- 键盘全局HOOK

一、新建一个DLL动态链接库


0a2653c851af460fa595bd959398a8f1.png


二、创建一个被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、右击项目--添加--新建项


0eacb84100b54626af849e6b562bf92a.png


2、添加def文件


2d65d23f6d4748949b924e4057485923.png


3、导出函数


LIBRARY


EXPORTS


sethook


4、通过PE软件查看导出函数


2e9b90b2ca334476abebe75bafe6eeaa.png


六、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;
       }
     
}
目录
相关文章
|
2月前
MFC -- 实现键盘HOOK
MFC -- 实现键盘HOOK
34 0
|
测试技术 API Windows
使用钩子(Hook)实现Revit API中 PickObjects 完成按钮的触发
使用钩子(Hook)实现Revit API中 PickObjects 完成按钮的触发
使用钩子(Hook)实现Revit API中 PickObjects 完成按钮的触发
|
2月前
|
Android开发
Xposed模块 -- Hook函数参数
Xposed模块 -- Hook函数参数
23 0
MFC -- 键盘全局HOOK
MFC -- 键盘全局HOOK
71 0
MFC -- 键盘全局HOOK
|
前端开发
前端hook项目pc总结笔记-hook项目文件自定义扎号onchange事件
前端hook项目pc总结笔记-hook项目文件自定义扎号onchange事件
60 0
|
API
LyScript 实现Hook隐藏调试器
LyScript 插件集成的内置API函数可灵活的实现绕过各类反调试保护机制,前段时间发布的那一篇文章并没有详细讲解各类反调试机制的绕过措施,本次将补充这方面的知识点,运用LyScript实现绕过大多数通用调试机制,实现隐藏调试器的目的。
57 0
LyScript 实现Hook隐藏调试器
|
安全 算法
代码还原的技术: Unidbg hook_add_new实现条件断点(二)
代码还原的技术: Unidbg hook_add_new实现条件断点(二)
代码还原的技术: Unidbg hook_add_new实现条件断点(二)
|
JavaScript
如何用 TypeScript 代码区分一个 button 动作是由键盘还是鼠标触发的
如何用 TypeScript 代码区分一个 button 动作是由键盘还是鼠标触发的
144 0
如何用 TypeScript 代码区分一个 button 动作是由键盘还是鼠标触发的