网络聊天软件实时监控系统设计与实现毕业论文_第1页
网络聊天软件实时监控系统设计与实现毕业论文_第2页
网络聊天软件实时监控系统设计与实现毕业论文_第3页
网络聊天软件实时监控系统设计与实现毕业论文_第4页
网络聊天软件实时监控系统设计与实现毕业论文_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学 号 分类号本科生毕业论文(设计)题目: 网络聊天软件实时监控系统设计与实现院 (系) 电子与信息工程系 专 业 计算机科学与技术 网络聊天软件实时监控系统设计与实现贺湘闽(安康学院电子信息工程系,陕西安康,邮编:725000)摘 要 随着信息时代的到来,网络聊天软件给人们沟通带来便利的同时也为各类人员利用网络进行影响信息安全行为甚至犯罪提供了条件。因此,进行实时的网络聊天监控就具有重要的研究意义和实用价值。Windows的消息机制是用户与Windows应用程序交互的基础,Hook技术为Windows的消息机制提供了一种对本地进程消息按照用户设置的条件进行过滤的内核级机制,所以基于Hook技

2、术实现了一个网络聊天软件的实时监控系统。由于实时监控会产生大量的数据,如何提高系统性能,保证数据完整性和可靠性,成为本系统研究的另一个关键点。在系统中采用多线程和数据两次存储技术。首先使用进程内多线程实现聊天数据获取与数据文档保存,第二次使用后台进程实现文档数据的数据库保存。关键词 聊天监控 Hook 多线程 Design and realization of real-time monitoring system on chatting software He Xiangmin(Ankang University Department of Electronic and Informatio

3、n Engineering, Shaanxi Ankang 725000)Abstract With the arrival of information era, network chatting software makes communication more convenient, but at the same time it influences the safety of information and even brings the condition to commit crime. has an important research and practical value.

4、 Key words Hook ; file; database目 录1 网络聊天软件监控的意义11.1 软件监控的现状11.2 网络监控技术概述11.3 发展前景21.4 本文研究主要内容22 网络聊天软件的监控的基本原理32.1 WINDOWS平台消息机制32.2 Hook技术42.2.1 Hook的技术原理42.2.2 Hook的种类52.2.3 Hook的使用方式5 DLL的三种注入方式52.3 WinSock数据传输方式及工作原理72.3.1 UDP(User Datagram Protocol)用户数据报协议72.3.2 TCP(Transmission Control Proto

5、col)传输控制协议82.3.3 套接字的阻塞模式和非阻塞模式93 聊天监控软件的系统分析113.1 软件目标113.2 聊天监控软件的功能分析113.3 软件的逻辑结构114 软件系统设计134.1 钩子模块设计134.2 数据库模块设计134.3 界面设计144.3.1 聊天界面144.3.2 数据库操纵界面设计154.4 文档数据与数据库设计164.4.1 数据文档的结构164.4.2 数据库设计165 系统实现及关键代码195.1 开发环境195.2聊天软件实现195.2.1 聊天信息的发送与接收195.2.2 RECVPARAM结构体195.2.3 用户消息响应205.3 聊天软件监

6、控的实现215.3.1 函数入口地址的获得215.3.2 内存的访问控制22 函数改写225.4数据文件的输入输出235.5 文件数据的导出及其数据库的操作235.5.1 文件数据导出235.5.2 数据库操作24结束语27参考文献28致 谢291 网络聊天软件监控的意义1.1 软件监控的现状网络1.2 网络监控技术概述1.3 发展前景随着网络聊天的发展,以后一定还会出现更多更好的聊天软件。并且监控的功能以后会原来越细化。比如用在电子商务上的阿里旺旺,可以监控一些虚假的广告信息,以及阻止一些非法的商业群发软件的应用。再比如用在QQ上,在这一个上亿人使用的聊天软件这个平台上,常常有不法分子发布对

7、社会,国家有危害的语言。数据量过大,仅仅依靠管理员的检查,力度是很难达到要求的。以后还可以根据不同的需求分析,可以开发出不同的聊天监控软件。有一个很大的发展空间,它只会随着网络聊天软件的普及也会迅速发展。 1.4 本文研究主要内容本论文分为四个章节,从理论依据,设计,和实施三个部分组成。重点是介绍HOOK的种类,以及其注入的方式与实现。以下为各个章节内容的简单介绍:第一章:网络聊天监控软件意义。通过一些调查了解到网络聊天软件监控软件的应用前景及市场的需求。第二章:从网络聊天软件的监控的基本原理,理解Windows消息机制。Winsock种类和工作原理。第三章:聊天监控软件的需求分析。从需求分析

8、,系统分析,和可行性分析三个角度来对聊天控制软件大体认识。 第四章:软件分析与设计,包括界面、数据库的具体实现。第五章:系统实现及关键代码。通过一个实例,详细说明聊天软件监控的全过程。第六章:总结与工作展望。总结这次毕业设计过程中的收获,以及对以后工作的展望,还有对指导老师的感谢。2 网络聊天软件的监控的基本原理2.1 WINDOWS平台消息机制Windows消息过滤机制,是微软给程序员提供的一个消息判别机制。也就是在消息循环中,通过一个HOOK的方法,可以对消息进行拦截。就像警察要抓一个犯人,在一个重要路口对所有要经过的行人进行排除,不是犯人的就可以通过。这个消息过滤机制,大大丰富了程序员的

9、编程思维。尤其在监控软件中可以得到了广泛的应用。2.2 Hook技术2.2.1 Hook的技术原理 Hook的种类根据Hook捕获消息的不同,Hook又分为键盘钩子、鼠标钩子、用户与空间交互的钩子、获得从消息队列发出的消息的钩子、调试钩子、捕获非标准硬件钩子等等。 Hook的使用方式 Hook的使用分为两大类。一个是全局钩子,一个是线程钩子。(1)修改注册表 可以使用注册表来插入DLL。因为整个系统的配置都是在注册表中维护的,可以通过调整它的设置来改变系统的行为特性。通过对注册表的修改(使用注册表编辑器),可以实现DLL的插入。在插入DLL时所用的所有方法中,这是最容易的一种方法。要做的工作只

10、是将一个值添加到一个已经存在的注册表关键字中。不过这种方法也有它的某些不足:由于系统在初始化时要读取这个关键字的值,因此在修改这个值后必须重新启动你的计算机即使退出后再登录,也不行。当然,如果从这个关键字的值中删除DLL,那么在计算机重新启动之前,系统不会停止对库的映射操作。你的DLL只会映射到使用User32.dll的进程中。所有基于GUI的应用程序均使用User32.dll,不过大多数基于GUI的应用程序并不使用它。因此,如果需要将DLL插入编译器或链接程序,这种方法将不起作用。(2)通过使用WINDOWS挂钩来插入DLL。安装了一个挂钩WN_GETMESSAGE,以便查看系统中的各个窗口

11、处理的消息。该挂钩是通过调用SetWindowsHookEx函数来安装的。hHook=SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,hinstDll,0)将会发生什么情况:u 进程B中的一个线程准备将一条消息发送到一个窗口。u 系统查看该线程上是否已经安装了WH_GETMESSAGE挂钩。u 系统查看包含GetMsgProc函数的DLL是否被映射到进程B的地址空间中。 (3)使用远程线程来注入第三种方法是使用远程线程。这种方法具有更大的灵活性。、要求懂得若干个Windows特性、如进程、线程、线程同步、虚拟内存管理、DLL和Unicode等。Windows

12、的大多数函数允许进程只对自己进行操作。这是很好的一个特性,因为它能够防止一个进程破坏另一个进程的运行。但是,有些函数却允许一个进程对另一个进程进行操作。这些函数大部分最初是为调试程序和其他工具设计的。不过任何函数都可以调用这些函数。这个DLL插入方法基本上要求目标进程中的线程调用LoadLibrary函数来加载必要的D L L。由于除了自己进程中的线程外,无法方便地控制其他进程中的线程,因此这种解决方案要求在目标进程中创建一个新线程。由于是自己创建这个线程,因此能够控制它执行什么代码。Windows提供了一个称为CreateRemoteThread的函数,能够非常容易地在另一个进程中创建线程H

13、ANDLE CreateRemoteThread( HANDLE hProcess,PSECURITY_ATTRIBUTES psa, DWORD dwStackSize, PTHREAD_START_ROUTINE pfnStartAddr, PVOID pvParam, DWORD dfwCreate, DWORD pdwThreadId);CreateRemoteThread与CreateThread很相似,差别在于它增加了一个参数hProcess。该参数指明拥有新创建线程的进程。参数pfnStartAddr指明线程函数的内存地址。当然,该内存地址与远程进程是相关的。线程函数的代码不能位

14、于你自己进程的地址空间中。这三个注入DLL的办法,在实施的时候可以根据自己的需要,使用不同的方式。比如程序已经是在注册表存在的可以使用注册表修改。如果要捕获特殊的API函数的应用,就可以用挂钩的方法注入。还有如果程序的灵活性较大,就还可以使用远程线程注入的方法。2.3 WinSock数据传输方式及工作原理2.3.1 UDP(User Datagram Protocol)用户数据报协议 2.3.2 TCP(Transmission Control Protocol)传输控制协议。TCP通信过程如图2-4所示:2.3.3 套接字的阻塞模式和非阻塞模式套接字的阻塞模式是指套接字在执行操作时,调用函数

15、在没有完成操作前不会立即返回的工作模式。使用阻塞模式的套接字开发网络程序比较简单,容易实现。当希望能够立即发送和接收数据,且处理的套接字数量比较少的情况下,使用阻塞模式来开发网络程序比较适合。阻塞模式的不足表现为,在大量建立好的套接字线程之间进行通信是比较困难。套接字的非阻塞模式是指套接字在执行操作时,调用的函数不管操作是否完成都会立即返回的工作模式非阻塞套接字在处理同时建立的多个连接,发送和接收的数据量不均、时间不定的方面具有明显优势。3 聊天监控软件的系统分析3.1 软件目标本系统就是要营造一个良好的网络聊天氛围,对违法犯罪的信息发布进行拦截与记录。为聊天软件开发商提供真实可靠的拦截数据记

16、录。为实时聊天安全监控提出一个初步的模版。可以根据需要对不同的分支进行扩展,包括网络聊天,电子商务的安全,以及聊天室,社区。系统功能应包含对数据的拦截、读写文件、数据库操作等。系统界面力求简洁、易用,在标准化的基础上考虑界面的美观和新颖。该软件可以面向所有经常使用网络聊天软件的用户。以及为网络安全管理员提供真实可靠的数据依据。3.2 聊天监控软件的功能分析本系统一共有4个模块。1:小型的聊天程序,它主要实现一般的聊天信息的接收和发送, 最主要的目的是为监控软件系统提供测试平台与环境。2:监控程序,对信息间的数据进行获取与分析。3:写程序文件,对拦截到的信息进行一个简单的文件操作。4:数据库管理

17、, 对大量的数据进一个综合的整理与分析。在得到拦截到的消息以后,管理员就可以对数据进行查询和分析。尽管系统有许多功能模块,但是从用户角度来看,系统提供的功能如图3-1所示: 图3-1 用例图3.3 软件的逻辑结构软件主要分为四个模块。聊天程序、Hook注入的DLL模块,文件读写模块和数据库模块。聊天程序通过WinSock,主要实现消息的发送与接收。Hook的DLL文件在发送Send()函数调用时,对Send()的消息进行拦截和判断。如果发现有不安全的信息时,会把内容通过文件流写到文件里面。最后通过数据库程序把文件内容导入数据库。各个模块类之间的关系如图3-2所示: 图3-2 软件各个模块类关系

18、图4 软件系统设计4.1 钩子模块设计钩子模块设计是系统中最核心的内容。在程序运行的时候,先钩子程序。当然钩子程序发现有send()函数调用时进行DLL的注入。将拦截到的信息写入到文件中,最后通过数据库程序将文件的内容进行拆分并导入到数据库中。钩子模块实现的顺序图如图4-1所示: 4.2 数据库模块设计数据库操作包括了4个模块。文件的读写、查询、删除、显示。数据模块类如图4-2所示: 文件的读写把Hook拦截到的文本内容进行拆分和导入数据库。然后管理员可以通过查询和删除功能对数据库的数据进行分析。数据库各个模块之间通过主界面模块互相联系。4.3 界面设计 4.3.1 聊天界面聊天界面分为接收消

19、息和发送消息两个区域。由两个编辑框控件一个IP地址控件和一个按钮控件组成。聊天界面和主流的聊天软件界面相符合。聊天界面的类组成图如图4-3所示:图4-3 聊天软件类组成图聊天界面如图4-4所示: 图4-4 聊天界面图4.3.2 数据库操纵界面设计 数据库的视图界面是数据库模块中重要组成部分。数据库的视图界面由一个网格控件、查找和删除两个按钮组成。管理员可以通过数据库的视图界面对拦截到的数据进行整理和分析。数据库视图界面类的组成图如图4-5所示: 数据库的视图界面如图4-6所示:图4-6 数据库视图 数据库的查找界面如图4-7所示: 图4-7 数据库查找界面图 数据库的删除界面如图4-8所示:图

20、4-8 数据库删除界面 4.4 文档数据与数据库设计 数据文档的结构数据文档用来记录每次拦截到的信息记录。为了在导入数据库时文档数据进行格式化拆分,需要定义数据文档的结构。一条完成的信息记录包括首尾字符分隔符、信息内容、拦截信息的来源、和拦截时间。文档结构如图4-8所示: 数据库设计 数据库存储了拦截到消息的内容,消息来源和记录的时间。数据库信息类图如图4-9所示:5 系统实现及关键代码5.1 开发环境 操作系统:Microsoft Windows XP Server Pack 2 开发环境:Microsoft Visual C+ 6.0 Microsoft Visual VB 6.0 数据库

21、: SQLServer 2000 5.2聊天软件实现 5.2.1 聊天信息的发送与接收为了确保聊天信息的稳定安全的传递。聊天软件采用TCP协议进行通信。聊天程序启动以后,首先初始化Winsock,然后Winsock进行监听。当有请求连接的时候,Winsock会调用accept()接收连接。最后调用send()和recv()完成对话。实现聊天消息的发送与接收。在程序运行时初始化的代码如下: _declspecdllimportifthis return5.2.2 RECVPARAM结构体 为了提高程序的效率和传参的需要,程序要用到了一个结构体。在创建线程的时候,通过传递结构体的地址。实现一个地址

22、指针传递两个变量。structintsizeofcharcharintwhileifbreak"%s 说: %s"return5.2.3 voidiffalsecharcharelse"rn"chartrue"rn"5.3 聊天软件监控的实现5.3.1 函数入口地址的获得新建一个DLL文件。使用函数当Hook程序捕获到send()函数时,相应安装Hook的回调函数。通过回调函数的"wsock32.dll""send"ifreturnfalse_asm_asm returntrue 函数改写 内存

23、修改成功后,就可以通过自己定义的函数来改写拦截到的函数。intconstcharintintintcharchar"消息被拦截""成功拦截到的消息如下:"、return5.4数据文件的输入输出为得到直观的看到程序的运行情况。C+有一个stream这个类,所有的I/O都以这个“流”类为基础的5.5 文件数据的导出及其数据库的操作5.5.1 文件数据导出为了对数据进行统计和分析,需要将文件数据导出放到数据库中。首先用FSO对象对文件进行读取,然后通过ADO数据库操作将读取到的文件内容导入到数据库中。5.5.2 数据库操作考虑该系统的定位与现有技术力量,决定采

24、用SQLServer 2000作为系统的后台数据库开发环境。数据库主要要实现文件的读取,并且实时的对文件入库进行跟踪。提供保护机制,在网络不稳定的情况下,获取文件入库的位置。网络恢复的时候可以在记录点上继续入库。提高效率。建立一个VB工程,在全局变量里面需要用到数据库的ADO的引用,所以这个程序要对数据库进行操作,并且后面还要对文件进行读取,点击工程引用20。如图5-2所示:图5-2 工程引用图 引用两个文件,一个是Microsoft Scripting Runtime,这个主要要进行文件的操作,另一个是:Microsoft ActiveX Data object2.5 library.这个主

25、要负责相关的数据库操作。在窗体加载时连接数据库:Private Sub Form_Load()00" Set Conn = New ADODB.ConnectionConn.ConnectionString = strConnectConn.Openflag = 0tm = 1End Sub文件导入到数据库中最核心的是readinsert过程。readinsert的代码如下:Sub readinsert()Timer_insert.Enabled = False Dim b() As StringDim en, cn, pros As StringDim hasif As Longh

26、asif = 0If flag > lines Then Timer_insert.Enabled = False Exit SubEnd IfCall write_flag(CStr(flag)b = Split(a(flag), "|")If UBound(b) = 2 Thenen = check(b(0)cn = check(b(1)pros = check(b(2) en = RTrim(en)en = RTrim(en)hasif = Conn.Execute("select count(*) from lanjie where context=

27、 '" & context & "' and type= '" & context & "' ")(0)If hasif = 0 ThenConn.Execute ("insert into lanjie(contest,type,propery) values('" & RTrim(en) & " ','" & RTrim(cn) & "')")succes

28、s = success + 1Text1.Text = "成功插入: " & a(flag)Call writesuccess("成功插入: " & a(flag)Elsebad = bad + 1 Text_badlist.Text = "重复插入失败:" & a(flag)End IfEnd IfEnd Sub结束语通过这次毕业设计,本人不仅熟悉了WINDOWS的核心编程、HOOK技术,而且感觉自己的自学能力得到了提升。在毕业设计的这段过程中,可以深切地体会到不同开发工具的不同平台下利用各个优势进行开发。所

29、以通过实际地进行软件的开发和程序的设计,对所学知识的再认识和更进一步的理解和运用。但是由于时间太短,本程序还有很多不足的地方。结构上比较凌乱,在界面看不够方便美观。数据库的操作还不是很合理。这些功能都需要以后进一步的完善。美好的大学生活,培养了我科学严谨的思维方法,更造就了我积极乐观的生活态度和开拓进取的创新意识.课堂内外拓展的广博的社会实践、扎实的基础知识和开阔的视野,使我更了解社会。在不断的学习和工作中养成的严谨、踏实的工作作风和团结协作的优秀品质,使我深信自己完全可以在岗位上守业、敬业、更能创业!同时我也相信网络聊天监控软件必将有一片很大的前景,能为网络创造一个安全和谐的环境。 参考文献1 George Shepherd 、David J.Kruglinski VC.NE技术内M,MICROSOFT PRESS2 Charles Petzold WINDOWS 程序设计M,MICROSOFT PRESS3 艾克尔 刘宗田等 译, C+编程思想,北京:机械工业出版社4 姚领田 ,精通MFCM.北京:邮电出版社5 林锐 ,高质量C/C+编程M.北京: 机械工业出版社6 唐亚哲,网络编程M.西安: 西安交通大学出版社7 萧秋水,Windows网络编程之VC篇M.北京,清华大学出版社8 侯俊杰,深入浅出MFCM.北京:机械工业出版社9 胡峪,VC+高级编程技巧与

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论