HOOK技术-满足我们程序的偷窥欲
2006-12-26 22:14
246 查看
在Windows中,虚拟内存技术使一个进程内的代码访问另一个进程内的代码变得不那么容易。当然,这个不容易带来了很强的健壮性。因为即使本进程由于内存改写错误,导致程序崩溃,但另一个进程依然相当安全。
今天讲的就是:打破进程的边界,让我们的代码到其它进程的老家去逛逛。
使用HOOK技术需要编写DLL,然后把DLL映射到别的进程的地址空间中。在DLL中,我们需要挂接钩子,以用来钩进程的消息,鼠标事件,键盘事件。
先来看一个挂接钩子的函数:
HHOOK SetWindowsHookEx(int idHook;
HOOKPROC lpfn;
HINSTANCE hMod;
DWORD dwThreadId);
其中,iHook指定了钩子的种类,统计有13种:
WH_CALLWNDPROC 系统将消息发送到指定窗口之前的"钩子"
WH_CALLWNDPROCRET 消息已经在窗口中处理的"钩子"
WH_CBT 基于计算机培训的"钩子"
WH_DEBUG 差错"钩子"
WH_FOREGROUNDIDLE 前台空闲窗口"钩子"
WH_GETMESSAGE 接收消息投递的"钩子"
WH_JOURNALPLAYBACK 回放以前通过WH_JOURNALRECORD"钩子"记录的输入消息
WH_JOURNALRECORD 输入消息记录"钩子"
WH_KEYBOARD 键盘消息"钩子"
WH_MOUSE 鼠标消息"钩子"
WH_MSGFILTER 对话框、消息框、菜单或滚动条输入消息"钩子"
WH_SHELL 外壳"钩子"
WH_SYSMSGFILTER 系统消息"钩子"
参数lpfn指向钩子处理函数的指针。hMod标识了钩子处理函数所处模块的句柄。dwThreadId指定所需监视的线程Id,可以用GetCurrentThreadId()函数获得,如果该参数为0,则表示监视系统所有线程的钩子。
钩子安装完成后,如果被监视的行为发生,系统为调用钩子链表处的钩子处理函数进行处理。每一个钩子处理函数在进行相应的处理时都要考虑是否需要把事件传递给下一个钩子处理函数。如果要传递,就通过函数CallNestHookEx()来解决。尽管如此,在实际使用时还是强烈推荐无论是否需要事件传递而都在过程的最后调用一次CallNextHookEx( )函数,否则将会引起一些无法预知的系统行为或是系统锁定。
钩子使用完毕后,要记得释放钩子,释放钩子的函数如下:
BOOL UnhookWindowsHookEx(HHOOK hhk);
程序实例,待续。
今天讲的就是:打破进程的边界,让我们的代码到其它进程的老家去逛逛。
使用HOOK技术需要编写DLL,然后把DLL映射到别的进程的地址空间中。在DLL中,我们需要挂接钩子,以用来钩进程的消息,鼠标事件,键盘事件。
先来看一个挂接钩子的函数:
HHOOK SetWindowsHookEx(int idHook;
HOOKPROC lpfn;
HINSTANCE hMod;
DWORD dwThreadId);
其中,iHook指定了钩子的种类,统计有13种:
WH_CALLWNDPROC 系统将消息发送到指定窗口之前的"钩子"
WH_CALLWNDPROCRET 消息已经在窗口中处理的"钩子"
WH_CBT 基于计算机培训的"钩子"
WH_DEBUG 差错"钩子"
WH_FOREGROUNDIDLE 前台空闲窗口"钩子"
WH_GETMESSAGE 接收消息投递的"钩子"
WH_JOURNALPLAYBACK 回放以前通过WH_JOURNALRECORD"钩子"记录的输入消息
WH_JOURNALRECORD 输入消息记录"钩子"
WH_KEYBOARD 键盘消息"钩子"
WH_MOUSE 鼠标消息"钩子"
WH_MSGFILTER 对话框、消息框、菜单或滚动条输入消息"钩子"
WH_SHELL 外壳"钩子"
WH_SYSMSGFILTER 系统消息"钩子"
参数lpfn指向钩子处理函数的指针。hMod标识了钩子处理函数所处模块的句柄。dwThreadId指定所需监视的线程Id,可以用GetCurrentThreadId()函数获得,如果该参数为0,则表示监视系统所有线程的钩子。
钩子安装完成后,如果被监视的行为发生,系统为调用钩子链表处的钩子处理函数进行处理。每一个钩子处理函数在进行相应的处理时都要考虑是否需要把事件传递给下一个钩子处理函数。如果要传递,就通过函数CallNestHookEx()来解决。尽管如此,在实际使用时还是强烈推荐无论是否需要事件传递而都在过程的最后调用一次CallNextHookEx( )函数,否则将会引起一些无法预知的系统行为或是系统锁定。
钩子使用完毕后,要记得释放钩子,释放钩子的函数如下:
BOOL UnhookWindowsHookEx(HHOOK hhk);
程序实例,待续。
相关文章推荐
- HOOK技术-满足我们程序的偷窥欲(二)
- 简易网络程序反HOOK技术
- Spring+Hibernate+Struts技术的一个分页程序,共享给大家
- seo赚钱 _网络技术我们的工作跟一般人都不一样有木有
- 网络数据包拦截通用技术(协议驱动hook)
- 通过远程桌面操作程序出现hook cannot be created(SendKeys语句错误)的解决
- android-技术教程-调试程序的基础,在控制台上打印出想打印的东西 转载
- SAPUI5是什么?Fiori告诉我们将来UI开发用哪种技术?
- HOOK技术浅谈
- HOOK钩子技术4 SSDT HOOK
- 让我们写的程序生成单个的exe文件(C#winform程序举例)
- 其实,我们不需要手动关闭每个没用到的android程序
- 技术一点点的改进给我们带来很大的方便
- 一般处理程序结合反射技术统一执行客户端请求
- ARM NEON 编程系列4——如何将neon用来优化我们的程序
- linux0.11学习笔记-技术铺垫-简单AB任务切换程序(3)-调试手段和方法
- [转]PHP程序开发范例宝典 -- 第9章 MySQL高级应用技术
- 我们拿这10年做什么——满足成为年轻富翁的条件
- 基于Tcp通信的聊天程序微风IM(c#开源) -技术分析(一) 用户管理
- 卡尔曾写道,“作为一种技术,书让我们的注意力集中,使我们免受充盈于生活中的分心事所干扰。而一台联网的电脑却做着完全相反的事,它设计出来就是用来分散我们的注意力的……在知道我们的思想深度与专注程度直接相