Windows文件读写监控系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Windows文件读写监控系统
摘要:21世纪,人类进入了一个全新的时代,一个以计算机技术为代表的信息时代。人们的生活节奏随着信息技术的快捷方便而变快。在这次信息革命中谁拥有便捷的信息,谁就掌握了时代的命脉,占据技术的颠峰。在PC领域,称霸桌面的Windows系统的垄断和不公开源代码,对我们研究更是带来很大困难。本程序的全称为Windows下的文件监视程序,是一个工具软件。通过本程序的分析和设计,为创建更大的软件工程提供了一定的帮助。在逆向工程中,可以利用本程序,分析进程的文件读写情况,对工程的开发提供了一定的帮助。本程序采用VC开发环境,利用DLL挂接,拦截API等技术实现了对目标进程的文件读写监视
关键词:文件监视程序工具软件DLL挂接拦截API
1.引言
1.1课题背景
以计算机为代表的信息技术在近几年在全世界得到了飞速的发展,在企事业单位计算机已经成为主要的工作平台,在个人的日常生活中,计算机已经非常普及,就像普通家电那样。计算机技术的运用可以帮助人们减轻负担,提高工作效率。然而我们国家计算机研究起步相对较晚,特别在PC领域,微软的windows 平台垄断了我们国家的绝大部分,再加上它的源代码的不公开,以及众多版本,给我国的平台研究更是带来了很大的困难。
现在我们国家已经有一些公司和集体在研究操作系统。本程序是一个工具软件,它可以做为很多软件项目的工具,可以在项目开发前期进行简单的构造。在设计本程序的时候,运用了很多热门技术,比如DLL 挂接和远线程注射等,在很多杀毒软件和防火墙软件中都有它们的身影。
1.2系统开发的目的和意义
本程序作为一个工具软件,之所以设计它,主要一方面出于学习研究一些热门技术,以及利用这些技术能到达一个什么效果。它用到的技术,比如DLL挂接,API拦截,这些技术在很多杀毒软件等中运用的很多。比如卡巴斯基,它在进程读写时进行拦截,获得读写文件的数据,再利用其杀毒引擎进行查杀病毒。上面提到的拦截实际上是对文件读写API(比如ReadFile,WriteFile等)。很多游戏外挂利用远线程注射,将木马DLL插入游戏进程空间内,一旦插入成功,它就能破坏进程的正常运行,甚至有的对游戏进程的数据区进行搜索内帐号密码等信息,达到窃取帐号等目的。类似这些技术用处很大,几乎所有的市面上知名的软件都有用到。
另一方面是其实用性。本小程序能拦截目标进程对文件的操作,并向用户报告,并且可以设置对目标进程对文件只读,对一些重要数据可以起到一定的仿删除作用。比如一些病毒就专门破坏移动存储设备内的文件,通过对对其设置只读就可以防止这类事情的发生。
1.3国内外概况
在国外技术环境相对较好,很多公司都对windows文件系统都有深刻的研究,并且开发了很多文件过滤驱动程序,他们的功能都类似,这些驱动都处于功能驱动之上,通过对某些IO请求包(IRP)的过滤,实现一定的功能。由于驱动处在内核模式,因此这种方式功能非常强大,杀毒软件一般都在内核模式下监视进程的文件操作,它最先收到进程的IRP,通过修改,抛弃IRP,很容易实现文件的监视效果。另一种方法是在用户模式下监视,这种方法相对简单,它主要是拦截API,将API的头几个字节修改跳转指令,使跳转的我们自己写的替换API中,这样一旦目标进程调用了该被修改的API,就跳到我们写的替换API 上了,通过修改传递进来的参数实现某些功能。
在国内,台湾的志远公司设计的还原精灵,它则是修改MBR,使它的程序先被执行,然后将之前保存的FAT覆盖现在的FAT,到达文件系统的还原。内地的硬盘保护卡,则是采用文件过滤驱动方式。
2.应用技术
本程序作为一个工具软件,出于学习研究一些热门技术,以及利用这些技术能到达一个什么效果。用到Visual C++开发语言,用到API,API HOOK,API拦截,DLL挂接等,这些技术在很多杀毒软件等中运用的很多。
2.1 API
(1)API定义
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组编程的能力,而又无需访问源码,或理解内部工作机制的细节。API函数包含在Windows系统目录下的动态链接库文件中。
(2)Windows API
Windows API是一套用来控制Windows的各个部件的外观和行为的一套预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。
更易理解地说:Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理系统资源之外,它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序,所以便称之为Application Programming Interface,简称API 函数。凡是在Windows 工作环境底下执行的应用程式,都可以调用Windows API。
(3)API 分为四种类型
远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务),实现程序间的通信。
标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。
文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。
信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。
2.2 API HOOK
在Windows系统下编程,应该会接触到API函数的使用,常用的API函数大概有2000个左右。随着控件,stl等高效编程技术的出现,API的使用概率在普通的用户程序上就变得越来越小了。当诸如控件这些现成的手段不能实现的功能时,我们还需要借助API。最初有些人对某些API函数的功能不太满意,就产生了如何修改这些API,使之更好的服务于程序的想法,这样API HOOK就自然而然的出现了。
通过API HOOK,改变一个系统API的原有功能。基本的方法就是通过HOOK“接触”到需要修改的API函数入口点,改变它的地址指向新的自定义的函数。API HOOK并不属于MSDN上介绍的13类HOOK 中的任何一种。所以说,API HOOK并不是什么特别不同的HOOK,它也需要通过基本的HOOK提高自己的权限,跨越不同进程间访问的限制,达到修改API函数地址的目的。对于自身进程空间下使用到的API函数地址的修改,是不需要用到API HOOK技术就可以实现的。
2.3 Visual C++
Visual C++是一种可视化的、面对对象的高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大。在Visual Basic环境下,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
同时,由于本程序中的监视模块必须做成一个动态链接库,所以要求的开发环境必须能很好的支持动态链接库的开发。
2.4 DLL
动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个DLL 中,该DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。
3.系统总体分析
3.1系统的可行性研究
可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。也就是说可行性研究的目的不是解决问题,而是确定问题是否值得去解,研究在当前的具体条件下,开发新系统是否具备必要的资源和其它条件。一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案可行性等方面研究可行性。