码迷,mamicode.com
首页 > 其他好文 > 详细

钩子编程(HOOK) 留后门与钩子卸载

时间:2014-05-15 09:11:08      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   c   color   

作者 : 卿笃军


问题由来:一般编写钩子程序,我们希望程序一方面能屏蔽键盘鼠标消息,但又希望程序能留有一个“后门”,例如,按下F2退出程序。


下面示例,钩子后门设计与钩子卸载:


第一步:打开VC6.0创建一个基于对话框的MFC应用程序。


第二步:在BOOL CHookDlg::OnInitDialog()函数上面编写如下代码,注意不是OnInitDialog()里面:

HWND g_hWnd = NULL;        //窗口句柄
HHOOK g_hKeyboard = NULL;  //钩子句柄
//回调函数
LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wParam, LPARAM lParam)
{
	if (VK_F2 == wParam) 
	{
		::SendMessage(g_hWnd,WM_CLOSE,0,0);  //发送关闭主窗口消息
		UnhookWindowsHookEx(g_hKeyboard);    //卸载钩子
	}
	return 1;
}
第三步:OnInitDialog()函数里面编写如下代码,安装钩子:

	g_hWnd = m_hWnd;     //获得当前窗口句柄
	g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());//安装钩子
bubuko.com,布布扣

第四步:编译->链接->运行。

这里主要是要发送关闭主窗口消息,但是钩子程序又不是类里面的函数,而SendMessage()函数的第一个参数是需要一个窗口句柄,这里我们定义一个全局的窗口句柄,然后用主窗口的句柄m_hWnd将其初始化。


钩子编程(HOOK) 留后门与钩子卸载,布布扣,bubuko.com

钩子编程(HOOK) 留后门与钩子卸载

标签:style   blog   class   code   c   color   

原文地址:http://blog.csdn.net/qingdujun/article/details/25840661

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!