钩子函数在盗号木马程序中的应用研究

阅读: 评论:0

2024年9月6日发(作者:)

钩子函数在盗号木马程序中的应用研究

福建电脑 2010年第7期 

钩子函数在盗号木马程序中的应用研究 

刘文锋 

(菏泽学院计算机与信息工程系山东菏泽274015) 

【摘 要】:本文探讨了盗号木马病毒利用钩子函数的原理机制,盗取用户机密信息的过程,为用户预防该类型的木马 

提供了帮助。 

【关键词】:钩子,盗号木马,函数 

1.引言 

钩子函数的形式是各不相同的 下面以鼠标钩子函数举例说明 

LRESULT CALLBACKHookP1.(】c 

wParam.

LPARAM 1Param)' 

首先由江民反病毒中心在2004年l1月底截获的证券大盗 钩子函数的原型: 

木马病毒让人记忆犹新.几年前证券大盗病毒曾经盗买盗卖股 

票金额高达数千万元人民币.这让很多人担心自己的网上股票 

账户会在一夜之问被病毒抛售一空 证券大盗病毒是一种盗号 

Iitnt nCode.. WPARAM 

参数wParam和1Proram包含所钩消息的信息.比如鼠标位 

木马病毒.中了该病毒的计算机将被盗取关于多家证券交易系 置和鼠标状态或者键盘按键等 nCode是指有关消息本身的信 

统的交易帐户和密码 这种病毒在2007年和2008年又出现了 

息.比如是否从消息队列中移出 我们可以先在钩子函数中实现 

几种病毒变种。这让很多网民特别是股民整日提心掉胆。 

自定义的功能.然后再调用函数CallN,extHookE:x0把钩子信息传 

网络游戏也是盗号术马非常关注的领域.如魔兽大盗变种 递给钩子链的下一个钩子函数 当然也可以通过直接返回 

OZZ、征途大盗、传奇大盗、西游大盗、诛仙窃贼、完美世界窃贼、 TRUE来丢弃该消息.就阻止了该消息的传递。 

天龙神偷、梦幻西游大盗等都是很容易中的木马盗号病毒。仅根 

据金Lll发布的2007年上半年安全报告.就2007上半年新增的 

木马中.盗号木马是最严重的一类木马.占到术马总数的76. 

2)安装设置钩子 

只要感染了盗号木马.钩子函数即设置成功 

设置钩子是通过SetWind,lOWSHookEx0的API函数。当然我 

04%.高达58245种。再越来越信息化和网络化的现实世界中. 

们也可以使用其他MFC等功能实现 使用的函数原形如下: 

我们将不得不面I临各种各样的盗号木马 其实盗号木马的原理 

HHOOK SetWindowsHookEx(int idHook.,HOOKPROC lpfn,HIN— 

非常简单.大多利用钩子函数或截屏来记录用户的账户密码信 

STANCE hMod,DWORD dwThreadld)' 

息.那么首先让我们了解一下钩子函数。 

2.Windows中的钩子函数 

微软的windows操作系统是建立在事件驱动的机制上.即 

通过消息传递来实现 而钩子在 4ndows操作系统中.是一种能 

在事件到达应用程序前中途接获事件的机制.这种技术原理很 

idhook:使用钩子的类型值: 

lpfn:钩子进程的人口地址: 

hMo,d:应用程序事件的文件句柄: 

dwThreadld:使用钩子的线程标识 

idHook根据使用的不同可以设置不同的参数值 如以下两 

容易被盗号木马利用.比如我们发送的即时消息、用鼠标激活的 个参数.一个是关于记录键盘的钩子函数.另一个是记录鼠标的 

相应程序或代码、键.盘上输入过的账号密码等信息。并且,钩子 

钩子函数 

函数还可以通过修改或丢弃等手段来对事件起作用。 

Win,doWs中有两种钩子.一种是特定线程钩子(Thread Spe. 

a)WH KEYBOARD:当使用键盘敲打消息即键盘敲打的每 

个字符.在这个消息被放在应用程序的消息队列前.WIN 

cmc Hook,;).一种是全局系统钩子(Systemtwide Hooks)。特定线程 DOWS将首先调用你的钩子函数 钩子函数可以改变和复制甚 

钩子只是监视指定的线程.而全局系统钩子则可以监视系统中 

至丢弃键盘敲打过的消息 

所有的线程。无论是特定线程钩子,还是全局系统钩子,都是通 b)WH MOUSE:使用这个参数鼠标消息会在被放在应用程 

过SetWindow'sHookExn来设置钩子的相关信息。对于特定的线 

序的消息队列前.WINDOWS将会调用你的钩子函数.钩子函数 

程钩子.钩子的函数可以是包含在一个.exe文件中.也可以是一 可以改变记录甚至丢弃鼠标消息 

个单独的.dU文件。但是对于全局系统钩子.钩子函数必须包含 

3 释放钩子 

在独立的dll当中。当我们要捕捉键盘数据时.首先我们必须创 

当不再使用钩子时,必须及时卸载。这样可以减少CPU的 

建一个动态链接库。但是当钩子函数得到了控制权.并对相关事 

负担。 

钩子程序的释放使用的是UnhookWin4IowsH,[ookExf1函数。该 

件处理完成以后.如果想要该消息得以继续的传递.那么则必须 

调用另一个函数:CaI1N,extHtookEx ̄n。由于系统必须对每个消息单 

函数的原形为BOOL Unh,)c&Win,dowsH[ookEJ((HHOOK hhk'1. 

独处理.所以钩子函数增加了CPU的负担.也降低了系统的性 

BOOL是该函数的返回值类型。UnhookWindowsHookEx0数将 

能。所以当程序完成并退出时.应当释放钩子,调用函数:Un. 释放的是钩子链中函数SetWindowsHookEx所装入的钩子进程 

hookWindowsHookEx0。 

3.钩子函数的使用原理 

钩子变量hhk是将要释放的钩子进程的句柄。 

4.结束语 

编写钩子函数的步骤可分为三步:定义钩子函数、安装设置 

钩子和释放钩子 

1)定义钩子函数 

WNDOWS的钩子函数是WIINDOWS的主要特点之一 利 

用这些钩子函数.可以捕捉自己进程或其它进程发生的事件。通 

过”钩挂”.您可以给WINDOWS一个处理或过滤事件的回调钩 

钩子函数是一种特殊的回调函数。如果钩子监视的特定事 子函数.当每次发生某些事件时,INDOWS都将调用该函数。W 

 

件发生后.系统会转入调用钩子函数进行相应处理。不同事件的 

主要有两种类型的钩子:局部的钩子函数和远程(下转第48页)

福建 电脑 2010年第7期 

值访问时,也会产生系统瘫痪。为此,本文提出如下公众数据分 理。为了使得公众数据和非公众数据满足相同的一致性要求.在 

布方法,以规避备份数据的更新而带来的问题。 

固定的时间.根据不同类型的公众数据进行一致性处理 

该方法分别根据两种公众数据的操作特点提出解决办法 rl1增量型公众数据的一致性处理 

1.增量型公众数据分布方法 

因为非公众数据无论是否有复制.数据在各个结点总是保 

第一阶段:数据分布 

持一致的。例如,如果私人账户复制在各个结点.私人账户中的 

设分布式数据库有n个结点.d为公众数据。将d分别存放 

余额.在各个结点的账户余额都是相同的。而公众数据是采用非 

在n个结点上.使得每一个对d的分布式应用均为本地应用。这 复制分散在各个结点。在对公众数据操作时.规避了更新协议, 

种分布不通过分布式数据库的备份机制.因而.当对这些数据进 

对结点的公众数据操作是独立的。例如.公众数据…捐款账号 

行操作时是独立进行的.不会启动更新协议 这样减少了网络通 

被分散在各个结点上,相应的余额只是捐款余额的一部分。因 

讯的时间.提高了事务处理效率。 此.要设定一个节点为公众数据一致性处理结点。在这个结点上 

由于同一公众数据被分散在r1个结点上.破坏了分布式数 设定固定的时间.进行一致性处理。在一致性处理结点对各个分 

据库的一致性。例如银行账号在数据库中是唯一的.且只有一个 散结点的公众数据求和.同时清空各个结点的增量型公众数据 

与之相对应的账户余额 通过这种分布后.在每个节点都有该账 这样就达到了增量型公众数据的一致性 

号和余额。并且独立的进行操作,账户的唯一性受到破坏(由于 f21消耗型公众数据的一致性处理 

避开了更新协议)。所以,必须有第二阶段来保证数据的一致性。 消耗型公众数据的一致性处理和增量型公众数据的一致性 

第二阶段:维护数据的一致性 

处理类似,首先设定一个节点为公众数据一致性处理结点 在这 

由于公众数据为公共部门管理和使用 这一特征决定了公 个结点上.设定固定的时问进行一致性处理。该节点获得各结点 

众数据管理者是极少数人 例如捐款者众多.而对捐款账号的管 的消耗数据的总量.然后求得剩余数据 

理提取是极少数 因此.可以在固定的时间进行一次汇总.并完 

六、结论 

成清空操作 本文提出的公众数据的定义和公众数据分布方法.可以极 

具体做法是对公众数据设定一个固定的一致性维护时间. 大的提高对公众数据的处理效率.有效地缩短公众数据事务的 

该操作权限仅由公众数据的管理者所有 在指定的结点进行数 执行时问。能有效应对公众数据的瞬间峰值访问 由于这种分布 

据汇总,并清空各备份结点中的公众数据。 避开了分布式事务的数据备份机制而引起的通讯时间延迟.减 

2.消耗型公众数据分布方法 

少了分布式事务的提交协议所浪费的时间.所以这种方法在分 

第一阶段:公众数据分布与初值分配 布式数据库设计中是一种有效地方法 

首先把公众数据d分布在n个结点上.这与增量型公众数 

据相同。然后.对n个结点上的公众数据分配初值。这样.对公众 

参考文献: 

数据的访问就变成了对n个结点的访问 

[1】姚文琳,基于ORACLE的分布式数据库设计与技术计算机工程 

第二阶段:维护数据的一致性 

2006.20期 

由于公众数据分散后.规避了分布式数据库的一致性协议. 

【21杨艺,陈鹏,一种广域网中分布式数据库设计的数据分配方法计算 

因此.消耗型公众数据和增量型公众数据一样.需要进行数据一 

机应用2003.12期 

致性维护 其方法与前述的相同 

[3l李石君,王汉飞,分布式数据库设计中数据和操作的分配计算机 

五、公众数据分布流程 

工程 1999 12期 

1.建立公众数据分布表 

【4]Ram S,narasimhan S Database allocation in a distributed environ— 

ment

_

公众数据分布表用来记录公众数据在分布式数据库的分布 

incorpating A concurrency —control mechanism and queuing COSTS 

management science 40 vol,8 

情况。当要对公众数据进行分配和一致性处理时.需要查分布 

[5]CHATURVEDIAR,CHOABEY AK,ROAN js Scheduling the aUoca- 

表。 

tion of Data fragments in a distributed Daubme environment— ——‘A ma— 

2.公众数据分布 

chine leafing approach.IEEE TRANSACTIoNS oN ENGINEERING 

把公众数据分散在公众数据分散放在公众数据分布表中所 

MANAGEMENT 41 VOL,2 MAY 1994 

列的各个结点上.使公众数据成为本地数据.而不是通过分布式 

[61M uro,S;lbaralei,T;Miyajima,H;EvMuafion of the file redundancy in 

的复制策略进行分布。这样就避免了访问瓶颈问题。 

distirbuted Database Systems IEEE Transaction on Software engineering 

3.公众数据的一致性处理 

vol,11,2 feb 1985 

非公众数据的一致性是由分布式协议保证的 由于公众数 

[7]Philip M.Lewis,Arthur Bemstein DATABASE AND TRANSACTION 

据的分布是绕开了分布式协议。因此.需要单独进行一致性处 

PRoCESSING…An Appficafion—Oriented A pproch.Peanon Edu- 

cation 2002 10 

(上接第60页) 

的钩子函数。局部钩子函数仅钩挂您自己的进程事件。而远程的 

参考文献: 

钩子可以钩挂其它进程所发生的事件。这些钩子函数和一些截 

…1范文庆,周彬彬,安靖.精通Windows API一一函数、接口、编程实例 

图函数都是一些盗号木马程序赖以生存的主要方式.只要我们 

fM1.北京:人民邮电出版社,2009.2 

了解盗号木马病毒的原理,在平时的电脑使用中注意相关问题, 

【2]任师尊。都早春.对一种屏蔽常用输入消息病毒的剖析U】.长春大学学 

就能很好的避免盗号木马的攻击。 

报,2007(17—02) 

[3】张元良,孙世强.浅谈Win32系统钩子机制Ⅱ】.计算机应用,2001(04) 

[41吴星,阮俊,张燕.钩子技术与帐号窃取D】.电脑与信息技术,2008(08) 

钩子函数在盗号木马程序中的应用研究

本文发布于:2024-09-06 21:12:11,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1725628332362991.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:钩子   数据   公众   函数   一致性   消息
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23