什么是反HOOK手段

什么是反HOOK手段,第1张

Hook是Windows中提供的一种用以替换DOS下“中断”的系统机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行拦弯亏hook后,一旦发生已hook事件,对该事件进行hook的程序就会受到系统的通知,这时程序就能在第一时间对该事件做出响应。

一般情况下你如果使用GetProAddress函数得到的地址进行调用的话就不会被闹兆别人Hook,

但是有时候Hook程序可能会Hook GetProAddress函数,这样即使你通过GetProAddress函数

得到的地址也可能被人Hook了,所以,通过使用if(pFun <hLib || pFun >(hLib + size))

就可以判断这个函数的地址是不是在他原来模块的地址空间。如果不在原来的地址空间,肯定

就被别人Hook了。

不方便的地方就是每次调用这个函数时都要用pFun(...)

检测我的程序系统API函数也是可以的,你调用的时候使用pFun(...)方式调用吧。

这种方法只能保证你调用的函简神数不被人Hook,不能保证其他函数没有被人Hook.

透明加密技术是近年来针对企业文件保密需求应运而生的一种文件加密技术。所谓透明,是指对使用者来说是未知的。当使用者在打开或编辑指定文件时,系统将自动对未加密的文件进行加密,对已加密的文件自动解密。文件在硬盘上是密文,在内存中是明文。一旦离开使用环境,由于应用程序无法得到自动解锋培密的服务而无法打开,从而起来保护文件内容的效果。

透明加密有以下特点:

强制加密:安装系统后,所有指定类型文件都是强制加密的;

使用方便:不影响原有 *** 作习惯,不需要限止端口;

于内无碍:内部交流时不需要作任何处理便能交流;

对外受阻:一旦文件离开使用环境,文件将自动失效,从而保护知识产权。

透明加密技术原理

透明加密技术是与windows紧密结合的一种技术,它工作于windows的底层。通过监控应用程序对文件的 *** 作,在打开文件时自动对密文进行解密,在写文件时自动将内存中的明文加密写入存储介质。从而保证存储介质上的文件始终处于加密状态。

监控windows打开(读)、保存(写)可以在windows *** 作文件的几个层面上进行。现有的32位CPU定义了4种(0~3)特权级别,或称环(ring),如图1所示。其中0级为特权级,3级是最低级(用户级)。运行在0级的代码又称内核模式,3级的为用户模式。常用的应用程序都是运行在用户模式下,用户级程序无权直接访问内核级的对象,需要通过API函数来访问内核级的运租代码,从而达到最终 *** 作存储在各种介质上文件的目的。

为了实现透明加密的目的,透明加密技术必须在程序读写文件时改变程序的读写方式。使密文在读入内存时程序能够识别,而在保存时又要将明文转换成密文。Window 允许编程者在内核级和用户级对文件的读写进行 *** 作。内核级提供了虚拟驱动的方式,用户级提供Hook API的方式。因此,透明加密技术也分为API HOOK广度和VDM(Windows Driver Model)内核设备驱动方式两种技术。API HOOK俗称钩子技术,VDM俗称驱动技术。

“只要安装了透明加密软件,企业图纸办公文档在企业内部即可自动加密,而且对用户完全透明,丝毫不改变用户的工作习惯。在没有授权的情况下,文件即使流传到企业外部,也无法正常应银悄唯用。就像一个防盗门,装上就能用,而且很管用。”这是2006年透明加密在开辟市场时打出的宣传旗号。

对于当时空白的市场来讲,这一旗号确实打动了不少企业。如今,经过四年多的岁月洗礼,透明加密技术也在不断进步。就目前市面上的透明加密技术来看,主要分为两大类:即应用层透明加密技术和驱动层透明加密技术。本文将重点对两种技术的优缺点进行剖析。

应用层透明加密(钩子透明加密)技术简介

所有Windosw应用程序都是通过windows API函数对文件进行读写的。程序在打开或新建一个文件时,一般要调用windows的CreateFile或OpenFile、ReadFile等Windows API函数;而在向磁盘写文件时要调用WriteFile函数。

同时windows提供了一种叫钩子(Hook)的消息处理机制,允许应用程序将自己安装一个子程序到其它的程序中,以监视指定窗口某种类型的消息。当消息到达后,先处理安装的子程序后再处理原程序。这就是钩子。

应用层透明加密技术俗称钩子透明加密技术。这种技术就是将上述两种技术(应用层API和Hook)组合而成的。通过windows的钩子技术,监控应用程序对文件的打开和保存,当打开文件时,先将密文转换后再让程序读入内存,保证程序读到的是明文,而在保存时,又将内存中的明文加密后再写入到磁盘中。

应用层透明加密(钩子透明加密)技术与应用程序密切相关,它是通过监控应用程序的启动而启动的。一旦应用程序名更改,则无法挂钩。同时,由于不同应用程序在读写文件时所用的方式方法不尽相同,同一个软件不同的版本在处理数据时也有变化,钩子透明加密必须针对每种应用程序、甚至每个版本进行开发。

目前不少应用程序为了限止黑客入侵设置了反钩子技术,这类程序在启动时,一旦发现有钩子入侵,将会自动停止运行,所以应用层加密很容易通过反钩子来避开绕过。

驱动层透明加密技术简介

驱动加密技术是基于windows的文件系统(过滤)驱动(IFS)技术,工作在windows的内核层。我们在安装计算机硬件时,经常要安装其驱动,如打印机、U盘的驱动。文件系统驱动就是把文件作为一种设备来处理的一种虚拟驱动。当应用程序对某种后缀文件进行 *** 作时,文件驱动会监控到程序的 *** 作,并改变其 *** 作方式,从而达到透明加密的效果。

驱动加密技术与应用程序无关,他工作于windows API函数的下层。当API函数对指定类型文件进行读 *** 作时,系统自动将文件解密;当进入写 *** 作时,自动将明文进行加密。由于工作在受windows保护的内核层,运行速度更快,加解密 *** 作更稳定。

但是,驱动加密要达到文件保密的目的,还必须与用户层的应用程序打交道。通知系统哪些程序是合法的程序,哪些程序是非法的程序。

驱动层透明加密技术工作在内核层。

驱动加密技术虽然有诸多的优点,但由于涉及到windows底层的诸多处理,开发难度很大。如果处理不好与其它驱动的冲突,应用程序白名单等问题,将难以成为一个好的透明加密产品。因此,目前市面上也只有天津优盾科技等少数几家公司有成熟的产品。

应用层透明加密技术(钩子透明加密技术)与驱动层透明加密技术优缺点比较

两种加密技术由于工作在不同的层面,从应用效果、开发难度上各有特点。综上所述,应用层透明加密技术(钩子透明加密技术)开发容易,但存在技术缺陷,而且容易被反Hook所破解。正如杀毒软件技术从Hook技术最终走向驱动技术一样,相信透明加密技术也终将归于越来越成熟应用的驱动技术,为广大用户开发出稳定、可靠的透明加密产品来。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12434096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存