1引言
在互联网应用日益丰富的今天,计算机安全已经成为了
一个不可忽视的问题。各种类型的计算机病毒对于普通的计
算机用户来说都是一种潜在的威胁,而在这种形势下对于计
算机中重要文件的保护也成为了一种越来越急迫的需求。为
了避免本地计算机中重要的文件被任意篡改或删除,设计了
一种文件监控系统对本地文件进行监控。
2功能概述
在系统启动的时候,会弹出对话框询问需要监控的文件
及路径,可以指定具体的文件也可以是某一个文件夹。如果
不希望在此时进行路径指定也可以选择取消并跳过此对话框
进入系统,进入系统后可以通过“运行”菜单中的“选择路径”菜单项指派监控路径。在“运行”菜单中还有“开始监控”和“停止监控”两个菜单项分别用于启动和停止监控,默认情况下监控是开启的。
本地文件监控系统的一个最重要的功能就是监控本地计算机上被保护的文件被访问的时间及方式。另外,还设计了选择安全级别的功能,用户可通过选择菜单栏中的“安全”菜单选择低、中、高三个安全级别中的一个。如果选择了低安全级别,则监控系统只负责记录文件被访问的信息;如果选择了中安全级别,则监控系统除了记录访问信息外还阻止了文件的删除操作;如果选择了高安全级别,则监控系统在低和中安全级别的功能的基础上还阻止了文件的修改以及在文件夹内新建文件的操作。最后,此监控系统还有一个浏览文件信息的功能,可以选择通过树形视图中和文件名对应的节点来查看相应的文件信息。本地文件监控的效果图如图1。3实现原理
3.1文件信息浏览的实现
本系统属于单文档的MFC程序,监控路径被指定后存储于CDocument类的子类CNativeProtectDoc类的成员变量m_strPath中。树形视图类通过此变量获得监控路径,然后通过遍历该路径下的所有文件建立起树形视图,并将对应的文件信息存储于程序队列中。由于遍历是顺序执行的,而文件信息在遍历的同时被顺序地添加进程序队列中,因此当用户单击树形视图中的某一节点时可以通过节点的序号迅速地从队列中获得相应的文件信息节点并将信息显示到客户区右上方的列表视图中。遍历文件夹所用到的函数为MFC函数库中的CFileFind类的FindFile和FindNextFile两个函数,CFileFind 类的对象保存了当前找到的文件的路径、大小以及是否为文件夹等信息。结合这两个函数使用递归方法即能完整地遍历整个文件夹,当然也包括了子文件夹。
3.2文件监控
本地文件监控系统
陆添超
(中国矿业大学计算机科学与技术学院,徐州221116)
摘要:计算机安全问题一直是业界关注的焦点问题之一,对于某些重要的私密文件可能会由于病毒或是黑客的恶意破坏而丢失掉,本地文件监控系统能够有效地保护重要的文件不被篡改。Windows操作系统的API函数提供了监控本地磁盘文件的有效方法,只要巧妙地组合这些函数就能达到目的。
关键词:文件监控;文件保护;计算机安全;Windows API;MFC
Local File Monitoring System
LU Tianchao
(School of Computer Science and Technology,China University of Mining and Technology,Xuzhou221116)Abstract:The security of computer has always been a critical problem in IT field.Some of your valuable files may be ruined by virus or hackers.Native-protecting system will help protect these files effectively.The Windows operating system provides some application interface functions for programmers to realize this system.It is just a simple combination of these functions that reaches the goal.
Key words:file monitor;file protect;security of computer;Windows API;MFC
收稿日期:
2010-05-18
图1系统运行效果
136 --
计算机安全技术
COMPUTING SECURITY TECHNIQUES
如果发现有木马程序存在,最安全也是最有效的方法就是马上将计算机与网络断开,防止黑客通过网络对计算机进行攻击。然后编辑Win.ini 文件,将该文件[WINDOWS]段下面的“run=木马程序”或“load=木马程序”更改为“run=”和“load=”。
接着,编辑System.ini 文件,将该文件[BOOT]下面的“shell=木马程序”,更改为:“shell=explorer.exe ”。
最后,修改系统注册表。在注册表中,用regedit 对注册表进行编辑,先在“HKEY_LOCAL_MACHINE\\Software\\Mi -crosoft\\Windows\\CurrentVersion\\Run ”下找到木马程序的文件名,再在整个注册表中搜索并替换掉木马程序。
5结语
给出了常见病毒的一些预防及处理措施。随着技术的不
断发展,木马病毒必定也会以更隐蔽、破坏力更强的方式出现,但“魔高一尺,道高一丈”,相信反病毒方式也会不断进步,从而确保信息安全。
参考文献
[1]康治平.特洛伊木马可生存性研究及攻防实践.2006.[2]鲍友仲.网络安全之防黑秘诀.2002.
[3]戴小波.木马病毒的防御策略谈机械职业教育.2003.
(上接第131页)
为了实现在程序运行期间能够不间断地监控指定的文件夹,需要使用多线程技术。使用一个辅助线程来不停地监控文件的访问信息,只要程序的主线程不停止或者不人为地停止文件监控这个辅助线程就不会停止。要监控文件的访问信息就要用到Windows API 的ReadDirectoryChanges 函数,此函数能够通过传入的指针参数返回指定文件路径的改动信息,包括访问该路径下的文件、修改文件、删除文件、新建文件、文件重命名等。该函数的原型如下:
BOOL WINAPI ReadDirectoryChanges (__in HANDLE hDirectory,__in_out LPVOID lpBuffer,__in DWORD nBufferLength,__in BOOL bWatchSubtree,__in DWORD dwNotifyFilter,__out LPDWORD lpBytesReturned,__in LPOVERLAPPED lpOverlapped,__in LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine );
其中hDirectory 为使用CreateFile 函数为指定路径生成文件的句柄;lpBuffer 为用于存储返回的文件访问信息的缓冲区的指针;nBufferLength 为以字节为单位的缓冲区的大小;bWatchSubtree 用于指定是否监控子文件夹,如果传入TRUE 则表示监控子文件夹;dwNotifyFilter 用于指定监控的动作,例如FILE_NOTIFY_CHANGE_FILE_NAME 表示监控文件重命名这一动作,可以使用“|”来组合多个这样的值,这样就能满足几乎所有的监控需求;lpBytesReturned 用于在同步调用中指定传入lpBuffer 的字节数,而在异步状态下传入NULL 值即可;lpOverlapped 为指向OVERLAPPED 结构的指针,仅在异步调用中使用;最后一个参数是指向OVERLAPPED_COM -PLETION_ROUTINE 的指针,简单地传入NULL 即可。
在线程函数中需要做的就是在一个while 循环中循环调用ReadDirectoryChanges 函数,然后通过lpBuffer 返回的文件访问信息判断文件具体被如何改动了,然后通过不同安全级别下的策略来实施文件保护操作。在此系统中主要拦截了4种文件操作,通过返回的lpBuffer 指针指向的缓冲区中的Action 属性来识别这些操作。这4种操作分别为新建文件、删除文件、修改文件和重命名文件,分别通过Action 的4种取值FILE_ACTION_ADDED 、FILE_ACTION_REMOVED 、FILE_AC -TION_MODIFIED 、FILE_ACTION_RENAMED_OLD_NAME 来区别。
3.3阻止文件删除
在用户指定完监控路径后,系统就开始遍历该路径并构造树形视图,而在这期间系统还进行了另外一个操作,那就是生成监控路径的文件镜像。在遍历过程中每遇到一个文件就将其复制到文件镜像中。当监控到文件被删除时,系统就将镜像文件中对应的文件恢复到监控路径中。这其中使用到了Windows API 的CopyFile 函数,此函数用于将指定的文件复制到目标路径中。3.4阻止文件修改及新建
当系统监测到有文件被重命名时,系统能够将其改回原名。当系统监测到文件被修改时,系统使用DeleteFile 函数将该文件删除,接着用CopyFile 函数将文件镜像中对应的文件复制回来。当系统监测到监控路径下有文件被新建时,系统使用DeleteFile 函数将其删除。
4结语
微软的Windows 操作系统提供了丰富的API 函数使得大
家能够获知系统的绝大部分信息。灵活地结合与文件操作相关的函数就能实现强大的文件系统监控功能。然而,在有效地使用API 函数的同时,仍然需要注意程序的逻辑。在实现系统之前应该做好系统的体系结构设计,只有在对程序逻辑非常清楚的情况下才能实现高效的程序。
参考文献
[1]侯俊杰.深入浅出MFC.武汉:华中科技大学出版社,2001.
[2](美)Jeff Prosise.MFC Windows 程序设计.北京:清华大
学出版社,2001.
[3](美)Jeffrey Richter ,(法)Christophe Nasarre.Windows 核
心编程.第5版.北京:清华大学出版社,2008.
作者简介
陆添超,男(19-),本科生,研究方向:计算机软件技术。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
137--