当前位置:首页 > 黑客业务 > 正文内容

钩子技术黑客的简单介绍

hacker2年前 (2022-05-28)黑客业务100
本文导读目录:

阻止了钩子注入就是成功拦截了木马病毒吗

一、对于你的具体问题的分析

很明显你的QQ被盗了,为什么被盗则是因为中了木马.关于木马如何进入你的计算机及如何盗取你的QQ号及如何防范木马,请看下文.

二、什么是计算机病毒与木马

计算机病毒是一个程序,一段可执行码。它和我们常用的各种软件如播放器、QQ聊天软件等一样都属于应用程序,计算机病毒与普通应用程序的区别在于它一般具有传染性、隐蔽性、破坏性等特点。计算机病毒就是能够通过某种途径潜伏在计算机存储介质(或程序)里, 当达到某种条件时即被激活的具有对计算机资源进行破坏作用的一组程序或指令集合。

特洛伊木马(以下简称木马),英文叫做“Trojan house”,其名称取自希腊神话的特洛伊木马记。它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。木马程序通常由客户端(Client)和服务端(Server)两部分组成,服务端被种植到远程计算机上,客户端由黑客在自己的主机上运行,客户端可以向服务端发送各种指令来控制服务端的电脑。

计算机病毒和木马都是一种应用程序,病毒的主要特点在于传染性和破坏性,木马的主要特点在于远程控制,木马与病毒相比更具有潜在的危险性。

三、什么是计算机漏洞

顾名思义,计算机漏洞就是指计算机软件在程序设计上的缺陷,留下了隐患。黑客利用计算机漏洞可能完全控制你的电脑。微软的操作系统本身就存在着大量的漏洞(微软的主要操作系统有:MS-DOS,Windows 98/Me,Windows NT,Windows 2000,Windows XP,Windows 2003等),比较著名的漏洞有MS05039溢出漏洞、MS0601图形呈形引擎导致的远程执行代码漏洞、HELP控件跨域执行代码漏洞等,黑客利用这些漏洞曾一度使互联网病毒泛滥。

四、流行木马工作过程详解

1. 密码窃取木马,在此以QQ窃密木马“阿拉QQ大盗”为例:

阿拉QQ大盗在互联网上很流行,通过对木马程序进行初步的配置后它可以自动生成一个木马程序,如果你的计算机不幸运行此程序后,你的QQ将会在指定的时间内被强行关闭,当你再次登陆QQ时,你的号码及密码就会被此木马程序悄悄的发送到木马制造者指定的收信程序中,从此你的QQ号就不再是你的了。

2. 远程控制木马,在此以让人望而生畏的“灰鸽子”为例:

灰鸽子是一款很有名的远程控制软件,它由服务端和控制端两部分组成。它属于反弹端口型的木马程序,当你的电脑不幸中了灰鸽子服务端后,服务端会自动向木马制造者设置的地址发送连接请求,当服务端与客户端建立网络连接后,木马制造者将拥有你的电脑的完全控制权,包括密码窃取(如窃取你的宽带上网帐号进行网上消费)、屏幕监控(木马制造者可以远程看到你的桌面,你在做什么他可是了如指掌)、数据下载(你的所有资料都可以被他窃取)、格式化硬盘(让你的所有数据灰飞烟灭)、远程开启视频(如果你安装了摄像头的话,对方可以悄悄的打开你的视频而不被你察觉,真实的你也会展现在黑客面前)。

五、木马、病毒的传播途径

通过上面的介绍,相信大家对木马、病毒的危害巳经有一个感观的认识了,你也许会问:木马、病毒是如何进入我的计算机的呢?下面我就对木马、病毒的几种主要传播手段做一个简单介绍。

1. 通过硬件存储介质传播

前面讲过计算机病毒有自动复制传染的特性,所以如果U盘、MP3、SD卡、软盘、移动硬盘等移动存储设备如果接入感染了病毒的计算机后,其本身可能也会被感染病毒,如果再接入没有被感染病毒的计算机后,该计算机可能也会被传染病毒。

2. 通过局域网共享传播

前面提到了计算机的漏洞,微软的IPC共享就存在严重漏洞,许多病毒可以通过IPC默认共享自动感染局域网内的所有计算机。(我们在局域网内实现共享打印机、共享文件都是利用IPC来实现共享的)

3. 通过与应用软件捆绑传播

此种手段较为高明,木马制作者把木马程序捆绑到一个比较常用的应用软件上,比如Photoshop、QQ、Realplayer、Word等软件上,然后把这些捆绑了木马程序的应用软件放到互联网上提供给网友下载,当你下载下来安装这些软件的时候,被捆绑其上的木马也被你同时安装到自己的电脑中了,这一过程是不被你察觉的。

4. 通过电子邮件附件传播

木马制作者可以直接把木马程序作为附件发送给你,利用社会工程学的知识来骗你打开附件,比如说是你的同学,发给你一张新拍的照片,如果你信以为真,那可能就中计了。直接发送木马程序对于稍有网络安全意识的人来讲还是可以防范的,因为木马程序既然是应用程序,那么它的后缀名必定是.EXE。更高级的附件发送木马手法还是挺高明的,比如把木马程序的图标改为图片文件的图标或是Word文档的图标来进行鱼目混珠,还可以利用Word的宏命令直接把木马程序写入Word文档中,这样就更难察觉了。

5. 通过网页木马传播

什么是网页木马?答:网页木马就是利用计算机漏洞构造出的具有特殊功能的网页,当你打开此网页且你的计算机有此网页利用的漏洞时,你的电脑就会自动从指定的网址下载木马程序到你的电脑上并自动运行。这一切都是在隐蔽状态下进行的,对于你来说,你只不过就是打开了一个网页而巳,没有进行任何其它操作,但是你的电脑巳经中毒了。相对于其它传播手段而言,此种传播手段的传播效率最高!大约90%以上的木马程序都是通过网页木马来进行传播的。你也许会说你没有上什么不正规的网站,怎么也会中毒?事实上目前的许多网站都存在着各种各样的漏洞,黑客利用这些漏洞可以入侵网站,包括有名的网易、搜狐、新浪等大型知名网站都曾遭遇过黑客入侵而被篡改主页。黑客入侵网站后如果在这些网站的首页加上一段调用网页木马的代码,那么当你浏览这一网站时你就可能中了木马了。

6. 通过邮件网页木马传播

前面巳讲到什么是网页木马,那么邮件网页木马顾名思义就是通过邮件传播的网页木马了,木马制造者通过编辑电子邮件的源代码,可以发送一封网页格式的电子邮件给你,此种格式的邮件如果在源代码中加入调用网页木马的代码就称为邮件网页木马,此中邮件没有附件,你只要打开了这封邮就会中马,不需要进行其它任何操作!它相对于网页木马的优点在于可以发送到指定的邮箱指定目标进行攻击。

7. 通过影音文件网页木马传播

不知大家是否有过这样的经历,下载到一部自己喜爱的电影,正在观看时突然弹出来一个网页,这个网页就有可能是网页木马了(也有可能只是做广告),视频文件是可以添加事件的,可以让它在播放到指定时间时打开一个网页,如果打开的网页是网页木马,那么你的电脑从此就中毒了。此种木马常见于一些不正规的小网站提供的电影下载中或是BT等共享视频中。

六、杀毒软件与防火墙的工作原理

杀毒软件杀毒的一个重要依据就是根据自己病毒库中的特征码定义,所谓特征码就是某程序所特有的代码段,病毒特征码就是指某病毒所特有的代码,杀毒软件在对文件进行杀毒时对文件内的内码逐一进行检查,一旦发现此文件中含有某种病毒的特征码那么它就认为是某种病毒,无论这个文件到底是不是病毒。比较高级的杀毒软件通常对同一种病毒有两种特征码定义:文件特征码和内存特征码。程序是运行于内存中的,内存中的代码与文件本身的代码是不同的,有些文件直接用杀毒软件查杀是没有病毒的,但是你一旦运行它就会查出有病毒就是这个原因。

“黑客会打上我的主意吗?”这么想就对了,黑客就想钻鸡蛋缝的苍蝇一样,看到一丝从系统漏洞发出的光亮就会蠢蠢欲动!好,如何保护你的网络呢?计算机的高手们也许一张嘴就提议你安装网络的防火墙,那么第一个问题就来了:到底什么是防火墙呢?防火墙就是一种过滤塞(目前你这么理解不算错),你可以让你喜欢的东西通过这个塞子,别的玩意都统统过滤掉。在网络的世界里,要由防火墙过滤的就是承载通信数据的通信包。 天下的防火墙至少都会说两个词:Yes或者No。大多数防火墙采用的技术和标准可谓五花八门。这些防火墙的形式多种多样:有的取代系统上已经装备的TCP/IP协议栈;有的在已有的协议栈上建立自己的软件模块;有的干脆就是独立的一套操作系统。还有一些应用型的防火墙只对特定类型的网络连接提供保护(比如SMTP或者HTTP协议等)。还有一些基于硬件的防火墙产品其实应该归入安全路由器一类。以上的产品都可以叫做防火墙,因为他们的工作方式都是一样的:分析出入防火墙的数据包,决定放行还是把他们扔到一边。值得一提的是,只要你想上网,你的防火墙就一定会对一些程序和端口说“YES”来放行的。

七、道高一尺魔高一丈,木马病毒如何逃过防火墙与杀毒软件的拦截查杀

前面讲到杀毒软件杀毒的一个重要依据就是特征码,那么如果一个程序中不含有病毒库中定义的所有特征码的话,杀毒软件就自然不会认为这个程序是病毒了!黑客高手们通常的做法是做出来一个木马、病毒程序后,用各种杀毒软件去杀它,而后取得各种杀毒软件对此程序的特征码的定义,然后就是修改特征码,把征征码的代码改用其它的程序代码来实现相同的功能,经过大多数杀毒软件的轮攻与修改后,这个病毒就可以顺利逃过各种杀毒软件的查杀了!前面亦有提到只要你想上网,防火墙就会对某些程序(如IE浏览器)和端口放行,那么病毒木马通过线程插入系统进程的技术可以将自身置入系统进程之中,木马程序通常会利用80端口进行远程连接(WEB服务默认端口),这样只要你的电脑可以上网,那么木马程序同样也会被防火墙放行!对于黑客高手而言,普通的杀毒软件和防火墙(普通用户用到的杀毒软件及防火墙)就等于是花边,对们来说是不起什么作用的!所以当你用杀毒软件把你的所有硬盘都扫了一遍而没有发现病毒时你也不要沾沾自喜,很可能你中了做了免杀处理的病毒,这样虽然你中毒了你的杀毒软件也会视若无睹。-

八、木马隐藏技术,木马程序藏身何处

木马程序无论如何神秘,但归根究底,仍是Win32平台下的一种程序。Win32应用程序通常会有应用程序界面,比如系统中自带的“计算器”就有提供各种数字按钮的应用程序界面。木马虽然属于Win32应用程序,但其一般不包含窗体或隐藏了窗体,并且将木马文件属性设置为“隐藏”,这就是最基本的隐藏手段,稍有经验的用户只需打开“任务管理器”,并且将“文件夹选项”中的“显示所有文件”勾选即可轻松找出木马,于是便出现了下面要介绍的“进程隐藏”技术。

第一代进程隐藏技术:Windows 98的后门

在Windows 98中,微软提供了一种能将进程注册为服务进程的方法。尽管微软没有公开提供这种方法的技术实现细节(因为Windows的后续版本中没有提供这个机制),但仍有高手发现了这个秘密,这种技术称为RegisterServiceProcess。只要利用此方法,任何程序的进程都能将自己注册为服务进程,而服务进程在Windows 98中的任务管理器中恰巧又是不显示的,所以便被木马程序钻了空子。

第二代进程隐藏技术:进程插入

一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程。

一旦木马的DLL插入了另一个进程的地址空间后,就可以对另一个进程为所欲为,这里以盗QQ密码的木马为便进行简单讲解。

普通情况下,一个应用程序所接收的键盘、鼠标操作,别的应用程序是无权“过问”的。可盗号木马是怎么偷偷记录下我的密码的呢?木马首先将1个DLL文件插入到QQ的进程中并成为QQ进程中的一个线程,这样该木马DLL就赫然成为了QQ的一部分!然后在用户输入密码时,因为此时木马DLL已经进入QQ进程内部,所以也就能够接收到用户传递给QQ的密码键入了,真是“家贼难防”啊!

不要相信自己的眼睛:恐怖的进程“蒸发”

严格地来讲,这应该算是第2.5代的进程隐藏技术了,可是它却比前几种技术更为可怕得多。这种技术使得木马不必将自己插入到其他进程中,而可以直接消失!

它通过Hook技术对系统中所有程序的进程检测相关API的调用进行了监控,“任务管理器”之所以能够显示出系统中所有的进程,也是因为其调用了EnumProcesses等进程相关的API函数,进程信息都包含在该函数的返回结果中,由发出调用请求的程序接收返回结果并进行处理(如“任务管理器”在接收到结果后就在进程列表中显示出来)。

而木马由于事先对该API函数进行了Hook,所以在“任务管理器”(或其他调用了列举进程函数的程序)调用EnumProcesses函数时(此时的API函数充当了“内线”的角色),木马便得到了通知,并且在函数将结果(列出所有进程)返回给程序前,就已将自身的进程信息从返回结果中抹去了。就好比你正在看电视节目,却有人不知不觉中将电视接上了DVD,你在不知不觉中就被欺骗了。

所以无论是“任务管理器”还是杀毒软件,想对这种木马的进程进行检测都是徒劳的。这种木马目前没有非常有效的查杀手段,只有在其运行前由杀毒软件检测到木马文件并阻止其病毒体的运行。当时还有一种技术是由木马程序将其自身的进程信息从Windows系统用以记录进程信息的“进程链表”中删除,这样进程管理工具就无法从“进程链表”中获得木马的进程信息了。但由于缺乏平台通用性而且在程序运行时有一些问题,所以没有被广泛采用。

什么是Hook?Hook是Windows中提供的一种用以替换DOS下“中断”的一种系统机制,中文译名为“挂钩”或“钩子”。在对特定的系统事件(包括上文中的特定API函数的调用事件)进行Hook后,一旦发生已Hook的事件,对该事件进行Hook的程序(如:木马)就会收到系统的通知,这时程序就能在第一时间对该事件做出响应(木马程序便抢在函数返回前对结果进行了修改)。

毫无踪迹:全方位立体隐藏

利用刚才介绍的Hook隐藏进程的手段,木马可以轻而易举地实现文件的隐藏,只需将Hook技术应用在文件相关的API函数上即可,这样无论是“资源管理器”还是杀毒软件都无法找出木马所在了。更令人吃惊的是,现在已经有木马(如:灰鸽子)利用该技术实现了文件和进程的隐藏。要防止这种木马最好的手段仍是利用杀毒软件在其运行前进行拦截。

跟杀毒软件对着干:反杀毒软件外壳

木马再狡猾,可是一旦被杀毒软件定义了特征码,在运行前就被拦截了。要躲过杀毒软件的追杀,很多木马就被加了壳,相当于给木马穿了件衣服,这样杀毒软件就认不出来了,但有部分杀毒软件会尝试对常用壳进行脱壳,然后再查杀(小样,别以为穿上件马夹我就不认识你了)。除了被动的隐藏外,最近还发现了能够主动和杀毒软件对着干的壳,木马在加了这种壳之后,一旦运行,则外壳先得到程序控制权,由其通过各种手段对系统中安装的杀毒软件进行破坏,最后在确认安全(杀毒软件的保护已被瓦解)后由壳释放包裹在自己“体内”的木马体并执行之。对付这种木马的方法是使用具有脱壳能力的杀毒软件对系统进行保护。

什么是壳?顾名思义,你可以很轻易地猜到,这是一种包在外面的东西。没错,壳能够将文件(比如EXE)包住,然后在文件被运行时,首先由壳获得控制权,然后释放并运行包裹着的文件体。很多壳能对自己包住的文件体进行加密,这样就可以防止杀毒软件的查杀。比如原先杀毒软件定义的该木马的特征是“12345”,如果发现某文件中含有这个特征,就认为该文件是木马,而带有加密功能的壳则会对文件体进行加密(如:原先的特征是“12345”,加密后变成了“54321”,这样杀毒软件当然不能靠文件特征进行检查了)。脱壳指的就是将文件外边的壳去除,恢复文件没有加壳前的状态。

九、普通用户网络安全的出路:防胜于杀

综上可见,依赖于防火墙和杀毒软件想做到百毒不侵那是不可能办到的事情!可以这样说,只要你接入互联网那就有可能中毒,而且有可能中了毒也查不出有毒,那么对于没有专业的网络安全知识的普通用户来说,如何才能保障自身的网络安全呢?

1. 打好系统补丁,修复系统漏洞

前面讲到病毒的最大来源就是网页木马,而网页木马必定依赖于系统漏洞而生存,如果你的系统没有网页木马所利用的漏洞,自然它就不能发挥任何作用了!所以防范木马病毒进入电脑的最佳办法就是及时打好系统补丁,然后用漏洞扫描工具检测一下系统是否存在漏洞,直到修复到没有任何巳公布的漏洞而巳。

2. 及时更新杀毒软件的病毒库

虽然杀毒软件不是万能的,但是安装一个好的杀毒软件还是很有必要的,微软公司每年都会公布出大量的系统漏洞,然后在官方网站提供漏洞补丁供用户下载,然而仍然有许多未被发现的漏洞有可能被黑客利用,所以装个比较好的杀毒软件还是很必要的,推荐卡巴斯基和瑞星,卡巴斯基除了利用特征码杀毒外,还启用了虚拟机技术和行为跟踪技术,其文件查杀与内存查杀能力可谓是出类拔萃!瑞星与其它杀毒软件相比最出色的地方就在于内存查杀能力相当强大,缺点就是许多病毒木马都特别针对瑞星做了反查杀处理。

3. 做好系统备份,做好灾难恢复的准备

既然打补丁和安装杀毒软件都不是万能的,那么就要做好中毒的准备,及时做好系统备份,一旦出现灾难性故障可以迅速恢复操作系统,免去数据丢失的风险和重装系统的麻烦。

钩子是什么?

钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。

钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

http://www.ownsoft.com/Partment.asp?FirstIndex=2SecondIndex=5ContentIndex=231

http://www.hrbtvu.com/ip/lijing/vb6/vb/VB中文文章汇总/system/showdoc.asp-detail_id=77.htm

真正懂的进最好是黑客回答真正的黑客!请用理论回答谢谢!烦恼啊!

无论你是用软键盘和打乱顺序输的都是没有用的。真正的密码最终还是会出现在那个方框中。只要你输入是正确的密码,最终都会被盗。好点的盗号软件都是利用API HOOK 钩子技术,也就是截取方框里的密码。所以说无论你是用软键盘和打乱顺序输的都是没有用的。

还有就是到那个动态密保卡的问题,并不是他会破解你的密保卡密码,而是利用游戏BUG进入游戏,绕过了输动态密保卡的这一关。所以你的动态密保卡是没用的。当然拥有这种软件或者技术的人很少,所以一般只要提高防范意识就可以了。最好少用外挂,无论是免费的还是花钱买的,里面都不可或缺的有后门,这是通用的软件制作者的通用手段,为自己留下后路!!!

天锐绿盾数据防泄密软件加密是在驱动层还是应用层?

驱动层。驱动层透明加密技术工作在windows的内核层,他工作于windows API函数的下层。当API函数对指定类型文件进行读操作时,系统自动将文件解密;当进入写操作时,自动将明文进行加密。由于工作在受windows保护的内核层,运行速度更快,加解密操作更稳定,但开发难度大。

应用层加密通过windows的钩子技术,监控应用程序对文件的打开和保存,当打开文件时,先将密文转换后再让程序读入内存,保证程序读到的是明文,而在保存时,又将内存中的明文加密后再写入到磁盘中。与应用程序密切相关,它是通过监控应用程序的启动而启动的。一旦应用程序名更改,则无法挂钩。同时,由于不同应用程序在读写文件时所用的方式方法不尽相同,同一个软件不同的版本在处理数据时也有变化,钩子透明加密必须针对每种应用程序、甚至每个版本进行开发。

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

应用层透明加密技术(钩子透明加密技术)开发容易,但存在技术缺陷,应用程序版本变更容易产生不兼容,而且容易被反Hook所破解。

钩子问题.

以前做过编程,但现在都忘个差不多了,给你查了一点,看能不能有帮助

HOOK编程与消息处理一2009-06-14 16:02阅读本文需要一定的C++基础和windows编程基础,另外对动态链接库原理和机制也要有一定了解。我尽量讲解得简单明了一些。

因为考试系统项目中要对系统中的键盘消息进行处理,而WEB页面中对系统热键、功能键不能进行有效处理,如(ALT+F4 ALT+TABLE等等),因此需要编写一个WIN32下的客户端程序,内嵌一个WebBrownser实现页面显示(或用CHtmlView对象实现,其实道理都是一样的),这样我可以在客户端程序框架中对键盘消息进行处理。

本文介绍的内容主要是利用动态链接库安装全局进程钩子,实现应用程序的主导控制,因此本文的范畴还是在COM相关领域中。#此前在首页部分显示#

关于Hook编程,以前我总是认为很神秘,因为黑客技术中经常用到HOOK,比如最常见的盗取密码。下面我们来一窥门径。

首先我们来简单了解一下窗口句柄和WINDOWS消息处理机制;

窗口是Windows应用程序中一个非常重要的元素,一个Windows应用程序至少要有一个窗口,称为主窗口。窗口是屏幕上的一块矩形区域,是Windows应用程序与用户进行交互的接口。在windows应用程序中,窗口是通过窗口句柄(HWND)来标识的。我们要对某个窗口进行操作,首先要得到这个窗口的句柄。句柄(HANDLE)是Windows程序中一个重要的概念,使用很频繁。在windows程序中有各种各样的资源(窗口、图标、光标等),系统在创那家这些资源时会为它们分配内存,并返回标识这些资源的标识号,即句柄(图标句柄HICON、光标句柄HCURSOR、画刷句柄HBRUSH)。

Windows程序设计是一种完全不同于DOS方式的程序设计方法。它是一种事件驱动方式的程序设计模式,主要是基于消息的。例如当用户在窗口中画图的时候,按下鼠标左键,操作系统会感知这一事件,并将这一事件包装成一个消息,投递到应用程序消息队列中,然后应用程序通过调用GetMessage函数从消息队列中取出消息,然后调用DispatchMessage函数将这条消息调度给操作系统,操作系统会调用在设计窗口类时指定的应用程序窗口过程(WindowProc)对这一消息进行处理。

在实际应用中,可能要对某个特殊消息进行屏蔽,如在我的考试项目中要对键盘消息进行屏蔽,而鼠标消息不与处理。我们可以给我们的程序安装一个HOOK过程(钩子过程)来实现这一功能。在程序中,我们可以过SetWindowsHookEx函数来安装一个钩子过程。该函数声明如下:

HHOOK SetWindowsHookEx(

int idHook, // type of hook to install

HOOKPROC lpfn, // address of hook procedure

HINSTANCE hMod, // handle to application instance

DWORD dwThreadId // identity of thread to install hook for

);

SetWindowsHookEx函数的作用是安装一个应用程序定义的钩子过程,并将其放到钩子链中。应用程序可以安装多个钩子过程,对我们感兴趣的多个消息进行检查。这样多个钩子过程就形成了钩子链,最后安装的钩子过程总是排在该链的前面。如果调用成功,SetWindowsHookEx函数返回值就是所安装的钩子过程的句柄,否则返回NULL。

各参数的含义各位读者可以看下MSDN,MSDN中的英文也是很好读懂的,各位不要害怕。

第一个参数idHook MSDN中给出的含义是Specifies the type of hook procedure to be installed. 中文意思就是指定将要安装的钩子过程的类型。在我的项目中因为要处理键盘消息,因此本文中我会将其设为WH_KEYBOARD。如果要处理鼠标消息可将其设为WH_MOUSE。

第二个参数lpfn 指向相应钩子过程。如果参数dwThreadId 为0,或者指定了一个其他进程创那家的线程的标识符,那么参数lpfn 必须指向一个位于某动态接库中的钩子过程。否则,参数lpfn 可以指向当前进程相关代码中定义的一个钩子过程。

第三个参数hMod 指定lpfn 指向的钩子过程所在DLL的句柄。如果参数dwThreadId 指定的线程由当前进程创建,并且相应的钩子过程定义于当前进程相关的代码中,那么必须将此参数设为NULL。

第四个参数dwThreadId 指定也钩子过程相关的线程标识。如果其值为0,那么安装的钩子过程将与桌面上运行的所有线程都相关。

关于进程内的钩子比较简单,大家参看MSDN中的MouseProc、CallNextHookEx以及上面的SetWindowsHookEx等函数的说明就可以实现。在这里我们要写一个应用全局钩子的应用程序,主要是我想在程序运行时对桌面运行的所有进程的键盘消息都进行屏蔽。好,我们现在建一个空的DLL工程名为HookTest,再建一个C++源文件HookTest.cpp,在源文件中写一个函数SetHook用以安装钩子过程,再写一个函数UnHook用以卸载钩子过程。代码如下:

LRESULT CALLBACK KeyboardProc(

int code, // hook code

WPARAM wParam, // virtual-key code

LPARAM lParam // keystroke-message information)

{

if(VK_F2==wParam)

{

SendMessage(hWnd,WM_CLOSE,0,0);

UnhookWindowsHookEx(hKeyboardHook);

}

return 1;

}

void SetHook(HWND hwnd)

{

hWnd=hwnd;

hKeyboardHook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("Hook"),0);

}

void UnHook()

{

if(hKeyboardHook)

{

SendMessage(hWnd,WM_CLOSE,0,0);

UnhookWindowsHookEx(hKeyboardHook);

}

}

http://hi.baidu.com/mjnpc/blog/item/edbc9d1a6a74f9f3af5133a4.html

应用层加密相比驱动层加密为什么容易破解,应用层加密是什么意思啊!是怎么做的破解的

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

透明加密有以下特点:

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

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

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

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

透明加密技术原理

透明加密技术是与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技术最终走向驱动技术一样,相信透明加密技术也终将归于越来越成熟应用的驱动技术,为广大用户开发出稳定、可靠的透明加密产品来。

谁比较了解HOOK技术帮一下

Hook解释

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

另一解释:

钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。

钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

Hook原理

每一个Hook都有一个与之相关联的指针列表,称之为钩子链表,由系统来维护。这个列表的指针指向指定的,应用程序定义的,被Hook子程调用的回调函数,也就是该钩子的各个处理子程。当与指定的Hook类型关联的消息发生时,系统就把这个消息传递到Hook子程。一些Hook子程可以只监视消息,或者修改消息,或者停止消息的前进,避免这些消息传递到下一个Hook子程或者目的窗口。最近安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。

Windows 并不要求钩子子程的卸载顺序一定得和安装顺序相反。每当有一个钩子被卸载,Windows 便释放其占用的内存,并更新整个Hook链表。如果程序安装了钩子,但是在尚未卸载钩子之前就结束了,那么系统会自动为它做卸载钩子的操作。

钩子子程是一个应用程序定义的回调函数(CALLBACK Function),不能定义成某个类的成员函数,只能定义为普通的C函数。用以监视系统或某一特定类型的事件,这些事件可以是与某一特定线程关联的,也可以是系统中所有线程的事件。

系统钩子与线程钩子

SetWindowsHookEx()函数的最后一个参数决定了此钩子是系统钩子还是线程钩子。

线程勾子用于监视指定线程的事件消息。线程勾子一般在当前线程或者当前线程派生的线程内。

系统勾子监视系统中的所有线程的事件消息。因为系统勾子会影响系统中所有的应用程序,所以勾子函数必须放在独立的动态链接库(DLL) 中。系统自动将包含“钩子回调函数”的DLL映射到受钩子函数影响的所有进程的地址空间中,即将这个DLL注入了那些进程。

几点说明:

(1)如果对于同一事件(如鼠标消息)既安装了线程勾子又安装了系统勾子,那么系统会自动先调用线程勾子,然后调用系统勾子。

(2)对同一事件消息可安装多个勾子处理过程,这些勾子处理过程形成了勾子链。当前勾子处理结束后应把勾子信息传递给下一个勾子函数。

(3)勾子特别是系统勾子会消耗消息处理时间,降低系统性能。只有在必要的时候才安装勾子,在使用完毕后要及时卸载。

Hook的应用模式

观察模式

最为常用,像Windows提供的SetWindowHook就是典型地为这类应用准备的。而且这也是最普遍的用法。

这个模式的特点是,在事情发生的时候,发出一个通知信息。观察者只可以查看过程中的信息,根据自己关心的内容处理自己的业务,但是不可以更改原来的流程。

如全局钩子中,经常使用的鼠标消息、键盘消息的监视等应用。金山词霸屏幕取词的功能是一个典型的应用(具体技术可以参考此类文章)。

注入模式

这个模式和观察模式最大的不一样的地方在于,注入的代码是为了扩展原始代码的功能业务。插件模式是此类模式的典型案例。

不管瘦核心的插件系统(如Eclipse)还是胖核心的插件系统(如Delphi、Visual Studio等IDE环境),其对外提供的插件接口都是为了扩展本身系统的功能的。

这种扩展的应用方式的典型特点,就是新的扩展代码和原来的代码会协调处理同类业务。

替换模式

如果针对应用目的不同,可以叫修复模式或破解模式。前者是为了修改系统中的BUG,后者是为了破解原有系统的限制。

很多黑客使用此种模式,将访问加密锁的DLL中的导出表,替换成自己的函数,这样跳过对软件的控制代码。这类应用的难点是,找出函数的参数。

这类模式的特点是,原有的代码会被新的代码所替换。

前面三个是基本模式,还有很多和实际应用相关的模式。

集权模式

此类模式的出现,大都是为了在全部系统中,统一处理某类事情。它的特点不在于注入的方式,而在于处理的模式。

这个模式,大都应用到某类服务上,比如键盘服务,鼠标服务,打印机服务等等特定服务上。通过统一接管此类服务的访问,限制或者协调对服务的访问。

比如键盘锁功能的实现,就是暂时关闭键盘的所有应用。

这类模式的特点主要会和特点服务有关联。

修复模式

替换模式的一种,这里强调的是其应用的目的是为了修复或扩展原有系统的功能。

破解模式

替换模式的一种,这里强调的是其应用的目的是为了跳过原有系统的一部分代码。如加密检测代码,网络检测代码等等。

插件模式

注入模式的一种,在系统的内部直接依靠HOOK机制进行扩展业务功能。

共享模式

这类应用中,经常是为了获取对方的数据。必然我希望获取对方系统中,所有字符串的值。可以通过替换对方的内存管理器,导出所有字符串。

这个应用比较特殊。不过其特点在于,目的是达到系统之间的数据共享。

其实现,可能是观察模式,也可能是替换模式。

VB中的Hook技术应用

一、Hook简介

Hook这个东西有时令人又爱又怕,Hook是用来拦截系统某些讯息之用,例如说,我们想

让系统不管在什么地方只要按个Ctl-B便执行NotePad,或许您会使用Form的KeyPreview

,设定为True,但在其他Process中按Ctl-B呢?那就没有用,这是就得设一个Keyboard

Hook来拦截所有Key in的键;再如:MouseMove的Event只在该Form或Control上有效,如果希望在Form的外面也能得知Mouse Move的讯息,那只好使用Mouse Hook来栏截Mouse

的讯息。再如:您想记录方才使用者的所有键盘动作或Mosue动作,以便录巨集,那就

使用JournalRecordHook,如果想停止所有Mosue键盘的动作,而放(执行)巨集,那就

使用JournalPlayBack Hook;Hook呢,可以是整个系统为范围(Remote Hook),即其他

Process的动作您也可以拦截,也可以是LocalHook,它的拦截范围只有Process本身。

Remote Hook的Hook Function要在.Dll之中,Local Hook则在.Bas中。

在VB如何设定Hook呢?使用SetWindowsHookEx()

Declare Function SetWindowsHookEx Lib 'user32' Alias 'SetWindowsHookExA' _

(ByVal idHook As Long, _

ByVal lpfn As Long, _

ByVal hmod As Long, _

ByVal dwThreadId As Long) As Long

idHook代表是何种Hook,有以下几种

Public Const WH_CALLWNDPROC = 4

Public Const WH_CALLWNDPROCRET = 12

Public Const WH_CBT = 5

Public Const WH_DEBUG = 9

Public Const WH_FOREGROUNDIDLE = 11

Public Const WH_GETMESSAGE = 3

Public Const WH_HARDWARE = 8

Public Const WH_JOURNALPLAYBACK = 1

Public Const WH_JOURNALRECORD = 0

Public Const WH_KEYBOARD = 2

Public Const WH_MOUSE = 7

Public Const WH_MSGFILTER = (-1)

Public Const WH_SHELL = 10

Public Const WH_SYSMSGFILTER = 6

lpfn代表Hook Function所在的Address,这是一个CallBack Fucnction,当挂上某个

Hook时,我们便得定义一个Function来当作某个讯息产生时,来处理它的Function

,这个Hook Function有一定的叁数格式

Private Function HookFunc(ByVal ncode As Long, _

ByVal wParam As Long, _

ByVal lParam As Long) As Long

nCode 代表是什么请况之下所产生的Hook,随Hook的不同而有不同组的可能值

wParam lParam 传回值则随Hook的种类和nCode的值之不同而不同。

因这个叁数是一个 Function的Address所以我们固定将Hook Function放在.Bas中,

并以AddressOf HookFunc传入。至于Hook Function的名称我们可以任意给定,不一

定叫 HookFunc

hmod 代表.DLL的hInstance,如果是Local Hook,该值可以是Null(VB中可传0进去),

而如果是Remote Hook,则可以使用GetModuleHandle('.dll名称')来传入。

dwThreadId 代表执行这个Hook的ThreadId,如果不设定是那个Thread来做,则传0(所以

一般来说,Remote Hook传0进去),而VB的Local Hook一般可传App.ThreadId进去

值回值如果SetWindowsHookEx()成功,它会传回一个值,代表目前的Hook的Handle,

这个值要记录下来。

因为A程式可以有一个System Hook(Remote Hook),如KeyBoard Hook,而B程式也来设一

个Remote的KeyBoard Hook,那么到底KeyBoard的讯息谁所拦截?答案是,最后的那一个

所拦截,也就是说A先做keyboard Hook,而后B才做,那讯息被B拦截,那A呢?就看B的

Hook Function如何做。如果B想让A的Hook Function也得这个讯息,那B就得呼叫

CallNextHookEx()将这讯息Pass给A,于是产生Hook的一个连线。如果B中不想Pass这讯息

给A,那就不要呼叫CallNextHookEx()。

Declare Function CallNextHookEx Lib 'user32' _

(ByVal hHook As Long, _

ByVal ncode As Long, _

ByVal wParam As Long, _

lParam As Any) As Long

hHook值是SetWindowsHookEx()的传回值,nCode, wParam, lParam则是Hook Procedure

中的三个叁数。

最后是将这Hook去除掉,请呼叫UnHookWindowHookEx()

Declare Function UnhookWindowsHookEx Lib 'user32' (ByVal hHook As Long) As Long

hHook便是SetWindowsHookEx()的传回值。此时,以上例来说,B程式结束Hook,则换A可

以直接拦截讯息。

KeyBoard Hook的范例

Hook Function的三个叁数

nCode wParam lParam 传回值

HC_ACTION 表按键Virtual Key 与WM_KEYDOWN同 若讯息要被处理传0

或 反之传1

HC_NOREMOVE

Public hHook As Long

Public Sub UnHookKBD()

If hnexthookproc lt;gt; 0 Then

UnhookWindowsHookEx hHook

hHook = 0

End If

End Sub

Public Function EnableKBDHook()

If hHook lt;gt; 0 Then

Exit Function

End If

hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, App.ThreadID)

End Function

Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

MyKBHFunc = 0 '表示要处理这个讯息

If wParam = vbKeySnapshot Then '侦测 有没有按到PrintScreen键

MyKBHFunc = 1 '在这个Hook便吃掉这个讯息

End If

Call CallNextHookEx(hHook, iCode, wParam, lParam) '传给下一个Hook

End Function

只要将上面代码放在VB的模块中,用标准VB程序就可以了,当运行该程序后,就能拦截所有键盘操作。

扫描二维码推送至手机访问。

版权声明:本文由黑客平台在线接单_免费黑客平台的网站发布,如需转载请注明出处。

本文链接:http://heikexuexi.com/22334.html

分享给朋友:

“钩子技术黑客的简单介绍” 的相关文章

社会实践心得体会

社会实践心得体会

                                                                                               在那一个多月的社会理论口中,我得到了理解 面,次要负责办私人文员。在那个过程 之外,尔使用了浏览、提问、进一步...

感谢老师的话简短,精选

感谢老师的话简短,精选

                                                                                               每个人都应该感谢 先生 ,他们给我们带来了常识 ,给我们带来了熟悉 世界的机会 ,昨天他们在那里分享一点关于感...

 个人工作总结范文简短,有趣

个人工作总结范文简短,有趣

                                                                                               很多 人都写自己 的东西 总结,通过这个过程 事情 总结,你能找到自己 吗?以前有空的地方,还有进一步的地方。...

年度考核个人总结

年度考核个人总结

                                                                                               在一年的行程将停止 的时刻,很多 人都会对 当年的事情进行调查和停止 总结。除夕 野知道如何写不关于年度调查...

大学生自我鉴定

大学生自我鉴定

                                                                                               教熟的自尔判断 是指年夜 教熟在一个阶段停止 后处理 本身 的进一步学习 、事情 和职业 的总结。如何才能写出...

调研报告基本格式,优质

调研报告基本格式,优质

                                                                                               除了社会生涯 ,还有很多 的答案需要 我们停止研究,所以除夕 野?知道如何处理 那些问题的研究申报 ?昨天给除...

评论列表

俗野珞棠
2年前 (2022-05-28)

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

泪灼软祣
2年前 (2022-05-29)

,nCode, wParam, lParam则是Hook Procedure 中的三个叁数。 最后是将这Hook去除掉,请呼叫UnHookWindowHookEx() Declare Function UnhookWindowsHookEx

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。