HOOK的利用

HOOK的利用

可以通过安装HOOK过程来屏蔽相应消息,比如说鼠标消息,相应键盘消息

SetWindowsHookEx来安装相应HOOK过程,如果想屏蔽所有线程的消息,则HOOK过程必须在动态链接库中定义。

下面为屏蔽本进程中线程的鼠标和某些键盘消息的代码:

HHOOK hmouse;

HHOOK hkey;

HWND hwnd=NULL;

 

LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)

{

       return 1;//屏蔽所有鼠标消息

}

 

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)

{

/*if(VK_F2==wParam&&1==(lParam<<29&&1))//屏蔽alt+F2组合键

            return 1;

return CallNextHookEx(hkey,code,wParam,lParam);*/

      

if(VK_F2==wParam)//设置后门,当按F2则退出程序

       {

              ::SendMessage(hwnd,WM_CLOSE,0,0);

              UnhookWindowsHookEx(hkey);

              UnhookWindowsHookEx(hmouse);

       }

       return 1;

}

hmouse=SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());

hkey=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());

下面为屏蔽所有线程的鼠标及相应键盘消息

首先编写动态链接库hook代码:

hook.cpp

#include <windows.h>

HHOOK hmouse;

HHOOK hkey;

HWND hwnd;

 

LRESULT CALLBACK MouseProc(

  int nCode,      // hook code

  WPARAM wParam,  // message identifier

  LPARAM lParam   // mouse coordinates

)

{

       return 1;

}

LRESULT CALLBACK KeyboardProc(

  int code,       // hook code

  WPARAM wParam,  // virtual-key code

  LPARAM lParam   // keystroke-message information

)

{

       if(VK_F2==wParam)//F2退出

       {

              ::SendMessage(hwnd,WM_CLOSE,0,0);

              UnhookWindowsHookEx(hkey);

              UnhookWindowsHookEx(hmouse);

       }

       return 1;

}

void sethook(HWND handle)

{

       hwnd=handle;

       hmouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("hook.dll"),0);

       hkey=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("hook.dll"),0);

}

hook.def

LIBRARY hook

EXPORTS

sethook @2

hooktest客户端代码:

_declspec(dllimport)void sethook(HWND handle);

sethook(m_hWnd);

如果想在切换各窗口时,总让运行的程序处于最前面,而看不见其他的窗口,可通过设置当前窗口为顶级窗口,屏幕大小为全屏。

int cxscreen,cyscreen;

       cxscreen=GetSystemMetrics(SM_CXSCREEN);

       cyscreen=GetSystemMetrics(SM_CYSCREEN);

       SetWindowPos(&wndTopMost,0,0,cxscreen,cyscreen,SWP_SHOWWINDOW);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值