Hook和数据库访问

上传人:ji****72 文档编号:37520115 上传时间:2018-04-17 格式:DOC 页数:7 大小:54KB
返回 下载 相关 举报
Hook和数据库访问_第1页
第1页 / 共7页
Hook和数据库访问_第2页
第2页 / 共7页
Hook和数据库访问_第3页
第3页 / 共7页
Hook和数据库访问_第4页
第4页 / 共7页
Hook和数据库访问_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Hook和数据库访问》由会员分享,可在线阅读,更多相关《Hook和数据库访问(7页珍藏版)》请在金锄头文库上搜索。

1、Hook 和数据库访问和数据库访问1.安装 Hook 过程屏蔽鼠标键盘消息 新建一个基于对话框的 MFC 应用程序,取名 InnerHook,在 CInnerHookDlg 类上的 OnInitDialog 函数中安装 Hook 过程,编辑 InnerHookDlg.cpp,如下: /全局变量,用来保存键盘钩子过程的句柄 HHOOK g_hKeyboard=NULL; HHOOK g_hMouse=NULL; HWND g_hWnd=NULL; LRESULT CALLBACK MouseProc( int nCode, / hook code WPARAM wParam, / message

2、 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_SPACE=wParam|VK_RETURN=wParam)/屏蔽空格与键 if(VK_F4=wParam else return CallNextHookEx(g_

3、hKeyboard,code,wParam,lParam); */ if(VK_F2=wParam) :SendMessage(g_hWnd,WM_CLOSE,0,0); UnhookWindowsHookEx(g_hKeyboard);/移除 hook 过程 UnhookWindowsHookEx(g_hMouse); return 1; BOOL CInnerHookDlg:OnInitDialog() . . / TODO: Add extra initialization here g_hWnd=m_hWnd; g_hMouse=SetWindowsHookEx(WH_MOUSE,Mo

4、useProc,NULL,GetCurrentThreadId();/安装鼠标钩子过 程 g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId();/安装 键盘钩子过程 return TRUE; / return TRUE unless you set the focus to a control 2.屏蔽所有的进程与线程的键盘和鼠标消息 钩子过程 dll 新建一个空的动态链接库工程,取名 Hook,并新建一个 C+源文件,也取名 Hook,编辑: #include HHOOK g_hMous

5、e; HINSTANCE g_hInst;/用来存放当前动态链接库模块的句柄 /* /方式一 BOOL WINAPI DllMain( HINSTANCE hinstDLL, / handle to the DLL module DWORD fdwReason, / reason for calling function LPVOID lpvReserved / reserved )/得到动态链接库模块的句柄 g_hInst=hinstDll; */ LRESULT CALLBACK MouseProc( int nCode, / hook code WPARAM wParam, / mess

6、age identifier LPARAM lParam / mouse coordinates )/鼠标的钩子过程 return 1; void SetHook() /SetWindowsHookEx(WH_MOUSE,MouseProc,g_hInst,0); /方式一 g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle(“Hook“),0);/方式二 /安装鼠标钩子过程与当前的所有进程相关,并返回钩子过程的句柄给 g_hMouse; /其中 GetModuleHandle 是得到动态链接库模块的句柄, 再在 Hook

7、工程目录下,新建一个 def 文件,取名 Hook.def,添加到工程,编辑: LIBRARY HookEXPORTS SetHook2调用 Hook.dll 的客户端程序 新建一个 MFC 基于单文档的应用程序,在 HookTestDlg.cpp 中编辑: / CHookTestDlg message handlers #pragma comment(lib,“.HookDebugHook.lib“)/引入库文件 _declspec(dllimport) void SetHook();/声明这个函数是从动态链接库中引入的 BOOL CHookTestDlg:OnInitDialog() .

8、. / TODO: Add extra initialization here SetHook();/调用这个 Hook.dll 中的函数,安装钩子过程 return TRUE; / return TRUE unless you set the focus to a control 键盘钩子 在 Hook.cpp 中添加: #include HHOOK g_hMouse=NULL; HHOOK g_hKeyboard=NULL; HWND g_hWnd;/定义一个全局的句柄用来存放 Hook.dll 的句柄 LRESULT CALLBACK MouseProc( int nCode, / ho

9、ok code WPARAM wParam, / message identifier LPARAM lParam / mouse coordinates )/鼠标钩子过程 return 1; LRESULT CALLBACK KeyboardProc( int nCode, / hook code WPARAM wParam, / message identifier LPARAM lParam / mouse coordinates )/键盘钩子过程 if(VK_F2=wParam) SendMessage(g_hWnd,WM_CLOSE,0,0);/发送关闭窗口的消息 UnhookWin

10、dowsHookEx(g_hMouse);/移除鼠标钩子 UnhookWindowsHookEx(g_hKeyboard);/移除键盘钩子 return 1; void SetHook(HWND hwnd)/通过一个参数将这个 Hook.dll 句柄传进来 g_hWnd=hwnd; /SetWindowsHookEx(WH_MOUSE,MouseProc,g_hInst,0); /方式一 g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle(“Hook“),0);/方式二 /安装鼠标钩子过程与当前的所有进程相关,并返回钩子过程

11、的句柄给 g_hMouse; /其中 GetModuleHandle 是得到动态链接库模块的句柄 g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle(“Hook“),0); 在 HookTestDlg.cpp 中编辑: #pragma comment(lib,“.HookDebugHook.lib“)/引入库文件 _declspec(dllimport) void SetHook(HWND hwnd);/声明这个函数是从动态链接库中引入的 BOOL CHookTestDlg:OnInitDialog() .

12、 . SetHook(m_hWnd);/调用这个 Hook.dll 中的函数,安装钩子过程 return TRUE; / return TRUE unless you set the focus to a control 3.设置窗口最顶层且最大化 编辑 CHookTestDlg:OnInitDialog 函数: BOOL CHookTestDlg:OnInitDialog() . . / TODO: Add extra initialization here int cxScreen,cyScreen; cxScreen=GetSystemMetrics(SM_CXSCREEN);/获取屏幕

13、的宽度 cyScreen=GetSystemMetrics(SM_CYSCREEN);/获取屏幕的高度 SetWindowPos(/设置窗口的大小 SetHook(m_hWnd);/调用这个 Hook.dll 中的函数,安装钩子过程 return TRUE; / return TRUE unless you set the focus to a control 4.利用节关闭非当前窗口 在 Hook.cpp 中编辑: #include HHOOK g_hMouse=NULL; HHOOK g_hKeyboard=NULL; #pragma data_seg(“MySec“)/创建一个名字为 M

14、ySec 的节 /注意:节的名字要在 8 个字符以内,超出部分被截掉 HWND g_hWnd=NULL;/定义一个全局的句柄用来存放 Hook.dll 的句柄 #pragma data_seg() /节的结尾,这样成员变量 g_hWnd 就在 MySec 这个节当中了 /注意:只有被初始化了的变量才会被放置在节当中 /将 MySec 这个节设置成共享的节 /方式一 /#pragma comment(linker,“/section:MySec,RWS“)/设置这个节为读写共享(RWS) /方式二:在 def 文件当中添加 /* SEGMENTS MySec READ WRITE SHARED

15、*/ . .在 Hook.def 文件中添加: SEGMENTS MySec READ WRITE SHARED 编译后,将 Hook.dll 文件拷贝到 HookTest 工程下,然后再次运行 HookTest 测试程序,再按 Alt+Tab 键切换到 其这程序下,按 F2,测试程序依然退出了。5.数据库的编程 在 VB 中利用 ADO 访问数据库 新建一 VB 工程,向窗体添加两个控件(ADO Data Control 6.0)和(DataGrid Control 6.0),并拖到表单 中,在 Adodc1 上点右键-属性-使用连接字符串(生成)-提供程序(OLE DB Provider for SQL Server),连 接(用户名:sa,密码:luwei),数据库(test)-确定-记录源-命令类型(2-adCmdTable)-确定。 DataGrid 控件的数据源选择 Adodc1,运行,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号