HOOK技术原理与实现技术初探

HOOK技术初探

Hook技术实现原理

   Hook技术是Windows操作系统提供的一种消息处理平台,通过这种方式可以实现一些特殊的消息处理功能,为系统管理、程序调试等提供方便,但同时,也给病毒、木马等恶意程序提供了方便之门,了解掌握这门技术,不仅可以提高自己的安全防护技术,也可以实现一些常规程序难以完成的功能,其实我研究生的研究方向就是网络信息安全,对这门技术也不陌生,这次重新研究学习,因为项目的需要,也因为兴趣所在,......。以下内容是我根据网络内容整理,加上了我的理解,不一一指明出处,见谅。

关于DLL

  中文名称动态链接库,Windows系统下的可执行程序,可以调用库中的函数,有利于减小可执行代码的大小,软件的升级和软件的复用,是Windows系统普遍采用的方式,其系统内核都是以动态链接库的形式提供。在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的;而在Win32环境中,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的线程或进程所有。当进程在载入DLL时,操作系统**自动**把DLL地址映射到该进程的私有空间,也就是进程的虚拟地址空间,而且也复制该DLL的全局数据的一份拷贝到该进程空间。也就是说每个进程所拥有的相同的DLL的全局数据,它们的名称相同,**但其值却并不一定是相同的**,而且是互不干涉的。从这里可以看出,WIN32下,要实现不同的调用相同DLL的所有进程共享数据,要使用新的方法:**DLL共享数据段**
  #pragma data_seg("SharedDataName")
     HHOOK hHook=NULL;
  #pragma data_seg()
  #pragma comment(linker,"/section:.SharedDataName,rws")
 这个hHook变量,就可以在不同的**调用了相同DLL的进程间共享**。在一个加载了DLL的代码中,如果改变了它,其它加载相关DLL的程序会看到。
 DLL在Hook技术中起关键性作用,Hook代码注入到目标程序,就是由其特性:在用到DLL中的函数时,自动加载(映射)DLL代码到其虚拟空间,从而完成代码注入。注意这里的映射的含义,只是代码映射到了目标程序,目标程序中可以执行DLL中的代码,但是,代码的本尊,还是在安装Hook的程序空间,所以,这个程序的退出,会导致Hook的失效。上面是我个人开发Hook程序测试的结论。强调一下,安装了Hook之后,涉及到的进程,会自动加载Hook代码所在的DLL,我觉得准确的描述应该是,**映射**到进程的代码空间,这就是所谓的代码注入。DLL的全程变量,在各个加载DLL的进程中,各有副本,各种独立,不互相影响。如果需要共享变量,使用上面提到的方法。
 未完.......
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值