首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > windows >

Windows 反讯息钩子(1)

2012-08-30 
Windows 反消息钩子(1)消息钩子在Windows编程中有着非常广泛的应用,它可以任意拦截Windows系统,这个以消息

Windows 反消息钩子(1)

       消息钩子在Windows编程中有着非常广泛的应用,它可以任意拦截Windows系统,这个以消息为驱动的系统中的绝大多数消息类型。一方面这给编程者带来了巨大的灵活性,另一方面也埋下了巨大隐患,大多数窃密软件都使用这种方法。此篇文章给您提供一种钩子的反拦截方法,希望对您有所帮助。文章中使用了API钩子,您之前必须对此技术有一定了解。  
          为求完整,文章分为两部分,第一部分为消息钩子的使用,熟悉此技术的读者可以直接跳过此节。第二部分为消息钩子的反拦截。  

一、消息钩子的使用      消息钩子分为本地(local)和远程(remote)两种(两个local   system-wide   hook例外,无关主题,不多说了)。local类型的钩子函数只能拦截本进程的消息。能够拦截本进程以外的消息的钩子,都是remote类型。remote类型的钩子必须放在DLL里面。下面以remote类型为例,通过安装键盘钩子介绍其使用。  
     1、首先建立DLL,在头文件中添加如下代码。  
  FUN_SETWINDOWSHOOKA   *pFn   =   (FUN_SETWINDOWSHOOKA   *)    ::GetProcAddress(::GetModuleHandle("kernel32.dll"),   "SetWindowsHookA");       pFn(...);   

  你的方法还是屏蔽不了哦!不信试验一下!记得给分哦!(该法为:“反反API钩子大法”)  
   
  当然!同理也可以绕过API钩子!有同样兴趣的人记得发消息给我哦!  
   
  首先声明一下:我拦截的是消息钩子,如果安装钩子时考虑到了反卸载则不在讨论之内。  
  其次:上述方法不可靠,对CAPIHook类进行更改,可以实时对地址进行替换,就象消息钩子被调用次序的不确定性一样,到时候没法确定那个替换函数被调用了。

热点排行