综合课程设计报告键盘输入截获系统设计与实现.docVIP

综合课程设计报告键盘输入截获系统设计与实现.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  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系统键盘截获系统,在我们的生活中是很常见的,比如在军方的某些系统中,为确保某些机密信息不被泄露出去,就要求在工作人员在于外界交流的时候,无意中输出的可能隐含机密信息不被发送出去,此时可以设置关键字,使用钩子来屏蔽这些信息,不让其发送出去,这样就很好的杜绝了机密信息的泄露的发生,提高军方系统的安全性,以上是一个很常见的例子,那么当提及到Windows系统信息截获,不得不想到动态链接库和钩子,动态链接库在Windows系统中无处不在,编程过程中,调用的所有的API都是从系统动态链接库导出的,实际上,不使用动态链接库几乎是不可能的,因为Windows提供给编程人员的几乎所有功能都驻留在动态链接库中。 Windows 应用程序的运行模块是基于消息驱动的,任何线程只要注册了窗口类都会有一个消息队列来接收用户的输入消息和系统消息。为了取得特定线程接收或者发送的消息,就要用到Windows提供的钩子。Windows钩子广泛应用于各种检测侦查程序中,如输入监视、API截获等。一般的钩子函数都必须写在动态链接库中,以便注入到其进程。 一、需求分析 1、实验要求: 设计一个基于Windows或Linux的键盘输入捕获系统,对特定键盘输入进行检测过滤。要求如下: 设计一个键盘钩子程序捕获键盘动作,捕获任意窗口上的键盘输入,并进行记录; 能监控QQ、MSN、word、Excel、记事本、IE网页等应用程序; 设置一些关键词,根据键盘输入,设计一种关键词检测的方法,能在记录的键盘输入中检测出关键词出现的位置; 对输入的关键词,进行过滤,阻止其在相关的应用程序中输出; 2、实验环境: Microsoft Visual studio 2010 二、实验分组情况: 三、实验原理概述: 钩子:钩子是Windows中可以拦截事件的一种机制,可以指定一个函数作为特定类型的被拦截事件的钩子过程。钩子过程可以对拦截的每个事件进行处理。不同类型的钩子可以为消息处理机制的不同方面提供访问,例如,WH_MOUSE钩子可以监视与鼠标操作相关的消息。系统为每一个类型的钩子维护一个独立的钩子链,其中包含指定一组作为钩子过程的回调函数指针。当与指定类型的钩子相关联的消息发生时,系统会把消息传递给钩子链中相关钩子过程。 关于钩子需要了解到以下几点: 钩子是用来截获系统的消息流的。利用钩子,可以处理任何感兴趣的消息,包括其他线程的消息。 截获消息后,用于处理消息的子程序叫做钩子函数,它是应用程序自定义的一个函数,在安装钩子时要把这个函数的地址告诉Windows. 系统中同一时间可以有多个进程安装钩子。多个钩子函数在一起组成钩子链。所以在处理截获到的消息时,应该把消息事件传递下去,以便其他钩子也有机会处理这一消息。 钩子会使系统变慢,因为他增加了系统对每个消息的处理量。仅应该在必要时才安装钩子,而且在不需要时尽快移除。 全局钩子:钩子可以分为全局钩子和特定线程钩子,全局钩子的钩子过程只能在Dll中定义,全局钩子可以监视与调用线程位于同一个桌面的所有线程的消息,然后调用钩子过程对拦截的消息进行处理。 线程钩子:钩子的另一种类型是特定线程钩子,他只能监视一个单独的线程的消息。特定的线程钩子的钩子过程可以在应用程序的任何位置,每个线程都有自己的私有内存空间,所以一个线程不能调用其他线程的代码,也不能访问其他线程的内存数据,这样,如果在安装钩子的线程中定义钩子的过程,则其他正在运行的线程被拦截消息后,就不能成功调用钩子过程了。 动态链接库:动态链接库是应用程序的一个模块,这个模块用于导出一些函数和数据供程序中的其他模块使用。可以从以下3个方面来理解这个概念: (1)动态链接库是应用程序的一部分,他的任何操作都是代表应用程序进行的。所以动态链接库在本质上与可执行文件没有区别,都是作为模块被进程加载到自己的空间地址的。 (2)动态链接库在程序编译时并没有被插入到可执行文件中,在程序运行时整个库的代码才会调入内存,这就是所谓的“动态链接”。 (3)如果有多个程序用到同一个动态链接库,Windows在物理内存中只保留一份库的代码,仅通过分页机制将这份代码映射到不同的进程中,这样,不管有多少程序同时使用一个库,库代码实际占用的物理内存永远只有一份。 四、总体设计: 为实现实验要求的键盘输入截获系统功能,由实验要求我们可以了解到,我们要实现的功能主要包含以下几点,首先是设置的钩子函数能够截获键盘的输入,这是最基本的功能,因为我们要实现的是键盘的截获,而不是鼠标或者其他输入设别的信息的截获,所以可以理解为特点线程输入信息的截获,其次是能够监控能监控QQ、MSN、word、Excel、记事本、IE网页等应用程序,即为设置一个全局钩子即可截获所

文档评论(0)

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

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

1亿VIP精品文档

相关文档