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 条评论) |