Windows API拦截技术.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows API拦截技术   摘要:讲述了Windows API拦截的关键技术和方法,重点讲述了dll的注入技术和API拦截技术,并对各种技术进行了优缺点分析。   关键词:API;拦截   中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)27-1920-03   Windows API Hooking Method   SHI Yong-lin,PAN Jin,LI Guo-Peng   (Department one of Xian Communication Institute,Xian 710016,China)   Abstract:This paper give a detail explanation of how to Intercepting Win32 API,its main concern is the way to inject dll into processs space and API hooking.It also tell the strong and weak point of the different methods.   Key words:API;hooking      Windows下API(应用程序编程接口,实际上就是Windows系统调用)的拦截是个很有用的技术,现在很多商用的系统都用到了这种技术,如屏幕取词,内码转化,屏幕翻译,中文平台等等都涉及到了此项技术。比如大家熟悉的即时翻译软件,就是靠拦截TextOut()或ExtTextOut()这两个系统API调用实现的,在操作系统用这两个函数输出文本之前,通过拦截这两个调用,把传递给这两个调用的的英文替换成中文,然后再调用原来的API输出,从而达到即时翻译的目的。可以说,掌握了这种技术,从某种意义上讲就可以控制或改变操作系统或其他软件的功能,这也是许多游戏外挂等常用的技术。而且这种技术也被许多病毒和木马等利用,从而达到破坏系统和感染程序的目的,当然现在的反病毒软件也多用到此技术。      1 Windows API拦截技术概述      Windows API拦截的主要目的是在其他应用程序调用API之前将其拦截,由拦截者先处理传递的参数数据,然后决定是否再调用原来的API。比如API   BOOL TextOutA( HDC hdc, int nXStart,int nYStart,LPCTSTR lpString, int cbString);   在其他程序调用这个API之前,拦截程序可以先捕获这个调用,先对参数等进行处理,比如将cbString翻译为中文等,然后再调用原来的TextOutA进行文本输出,这样输出的文本就变成中文了。   API拦截的原理很简单,但是要实现可靠的拦截则需要很多工作要做,首先需要把替换被拦截API的代码注入到目标进程中,这些代码一般是以动态链接库(DLL)的形式存在的,然后修改目标进程执行代码,使其在调用被拦截API之前先调用我们的替代代码。这个过程的示意图如图1所示。      一般拦截程序至少需要两个部分,一个是管理服务器(Management server),它的主要工作是拦截DLL的注入工作,并管理DLL的工作状态,接收DLL发回的处理消息等;另一个是拦截DLL,它主要包含拦截代码以及代码注入和API拦截的一些辅助代码。   总结起来API拦截主要有以下三点工作要做。   1) 要决定拦截哪些进程的API,如果是拦截个别进程的API,那么只需要在这个进程中插入拦截DLL,否则则需要在系统的所有进程中插入拦截DLL。   2) 决定采用哪种DLL注入技术。DLL注入技术有多种,但最常用的就两种,一种是windows全局钩子技术,另外一种是利用CreateRemoteThread() API来进行。我们将在第二节进行重点阐述。   3) 决定采用哪种API拦截机制。这也有多种技术可用,可以在内核层(kernel level)中进行,也可以在用户层(user level)中进行。我们将在第三节对这个问题进行深入阐述。      2 DLL注入技术      代码注入技术分为动态代码注入技术和静态代码注入技术,动态代码注入技术就是在进程启动后或在进程启动时在进程的运行空间中注入代码的技术,而静态注入技术就是在PE格式的.exe文件中插入代码。静态注入技术是病毒感染文件的常用方法,在文献[1]中有详细的叙述。动态注入技术也分为直接代码注入技术和以dll形式的注入技术,直接代码注入技术是利用VirtualAllocEx和CreateRemoteThread两个API来进行的函数级代码注入技术,可以采用汇编的

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档