《VC++深入详解》读书笔记-HOOK
来源:互联网 发布:淘宝能刷心悦会员 编辑:程序博客网 时间:2024/05/21 22:27
1.进程内钩子
LRESULT CALLBACK KeyboardProc( int code,WPARAM wParam, LPARAM lParam )
{
if(VK_SPACE== wParam )
return 1;
else
returnCallNextHookEx( g_hKeyboard,code,wParam, lParam );
}
参数 wParam 是产生当前按键消息的虚拟代码,这是Windows 定义的与设备无关。Windows定义了一些虚拟代码来表示按键的脉冲信号,由键盘设备驱动程序负责解释。 空格键的虚拟代码是 VK_SPACE ,回车键代码是VK_RETURN。如果wParam是空格键虚拟代码,则返回1,表示已对空格键进行了处理;否则将按键消息传递给下一个钩子过程,如果没有下一个钩子过程了,消息将最终传递到程序窗口。CallNextHookEx第一个参数是当前钩子过程的句柄。2.全局钩子
安装钩子过程的代码必须放到动态链接库实现。SetWindowsHookEx函数第四个参数设置为0,第三个参数要求指定安装钩子过程所在的DLL模块的句柄。
获得这一句柄有两种方式。一种是为DLL程序提供一个DllMain函数,当第一次加载DLL时,系统会调用这个函数,并传递当前DLL模块的句柄。因此可在HookDll这一DLL中提供一个动态链接库入口函数:DllMain,并定义一个全局实例变量:g_hInst,然后在DllMain函数中保存系统传递过来的DLL模块句柄。
另一种方式,调用GetModuleHandle函数来得到指定的DLL模块句柄。
HMOUDLE GetModuleHandle ( LPCTSTRlpModuleName );
参数是指向一个以NULL为终止符的字符串,该字符串指定了想要获取其模块句柄的模块名称,可以是一个.exe文件,也可以是一个.dll文件。3.创建共享节
#pragma data_seg(“MySec”)
HWND g_hWnd=NULL;
#pragma data_seg()
#pragma comment(linker,”/section:MySec,RWS”)
或
在Hook.def文件中
LIBRARY HookDll
EXPORTS
SetHook @2
SEGMENTS
MySec READ WRITE SHARED
- 《VC++深入详解》读书笔记-HOOK
- 《vc++深入详解》读书笔记
- 《vc++深入详解》读书笔记之一
- 《VC++深入详解》读书笔记2
- 《vc++深入详解》读书笔记之二
- 《vc++深入详解》读书笔记之三
- 《vc++深入详解》读书笔记之四
- 《VC++深入详解》读书笔记-API与SDK
- 孙鑫VC++深入详解(11):HOOK过程
- 《VC++深入详解》读书笔记 第一章:Windows程序内部运行机制
- 《VC++深入详解》读书笔记——写在最前
- 《VC++深入详解》读书笔记——2.掌握C++
- 《VC++深入详解》学习笔记 第二十章 HOOK和数据库访问
- 看《深入详解VC++》
- 学VC++深入详解
- VC++深入详解第一章
- vc++深入详解笔记
- VC++深入详解20101215
- pentaho开源商业智能平台的搭建(4)
- oracle 对一个数据库打开多个实例
- POJ 1704
- 3G手机术语解释
- android 的ListView中,如何判断其内容已滚动到最顶部或者最底部?
- 《VC++深入详解》读书笔记-HOOK
- 2012年软件开发者薪资调查报告
- PHP 把数据库导成excel表
- Winform(C#)在VS2008中打包(制作安装包)
- #if #ifdef #if defined
- 4、设计模式——简单工厂模式
- 编写hadoop调度器用到的一些jar包
- 使用PreparedStatement防止SQL注入
- 312养生方法