




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络远程通信与控制程序设计作者姓名:大 卫专业名称:计算机科学与技术指导老师:杰克 副教授摘 要在如今这个信息高速发达的时代,人们之间的物理距离虽无太大变化,然而逻辑距离却在一天天缩小。同时,鉴于交通的繁忙,无纸办公和远程办公的趋势已然愈演愈烈!远程控制应运而生。远程控制起初是为了让pc用户在离开办公室的时候能够访问其台式pc硬盘中的信息,甚至可以通过其台式机pc访问企业网络资源。今天,许多企业和增值分销商正在把远程控制能力作为有效的技术支持工具。很多网络管理员都采用这类软件对局域网进行管理或者在家中更新自己网站的内容。这类软件对于出差在外的商务人员用处非常大,这样他们可以随时提取自己家里计算
2、机中的数据和资料。随着计算机信息现代工业的发展,计算机远程控制管理系统越来越受到各方面的重视。本文主要分析了远程控制系统的一些基本功能和组成情况,包括系统的需求分析、系统结构、功能模块划分分析等,重点对应用程序的实际开发实现作了介绍。达到了实时性和安全性,且应用程序功能完备。同时简单介绍了visual c+ 6.0编程环境和winsocket的功能特点。本课题设计是为适应远程控制及协助的要求,使远程控制提高到计算机的实时水平而设计的。远程控制包括多项内容,本课题设计只是承建了其中的一部分即:实时控制。本课题设计为一个通信应用程序,用到了多项技术,诸如:异步模式socket、面向对象编程、软件工
3、程思想、api hook等。本系统采用visual c+ 6.0作为开发工具, 整个系统操作简洁、界面友好、功能灵活、实用,实现了包括客户端屏幕监控、文件操作及传输、系统服务和注册表监控等基本功能,基本完成了远程控制中所需要到的主要功能。关键词:套接字 面向对象 软件工程 远程监控abstractalong with the development of the calculator information modern industry, the remote control system is more and more value by business enterprise and s
4、chool. this text mainly analyzed some basic functions of the remote control system and constitute the circumstance, including the requirements analysis, the structure of the system, the function mold piece divide the line analyze etc, the point make the introduction towards applying the actual devel
5、opment of the procedure realization. come to the consistency and safeties of the data, and apply the procedure function complete. it will introduce the visual c+ 6.0 programming environment and the features of the winsocket at the same time.this topic design is in order to adapt the remote control r
6、equest, make the remote assistance carry on the level by design that the management raises the calculator of. remote control includes several contents, this topic design just accepted to set up among them of one part namely: the real-time control. this topic used a number of techniques, for example:
7、 the socket of asynchronous mode, object-oriented, software engineering, api hook etc. this system uses visual c + + 6.0 as a development tool, the operation of the entire system is simple, interface is user-friendly, function is flexible and practical, achieved the basic functions including screen
8、monitoring, control and transfer files, process monitoring, system services and registry monitoring, complete the main functions of what the remote assistance system need to go.keyword: socket,object-oriented,software-engineering,hook,remote control目录摘 要iabstractii目录iii前言11 远程通信与控制技术概述21.1 课题背景21.2
9、目的以及意义31.3 microsoft visual c+及编程模式简介41.3.1 visual c+的简介41.3.2 mfc应用程序框架51.3.3 mfc的消息映射71.4 系统架构的模式101.4.1 c/s结构模式101.4.2 tcp c/s模式的通信原理101.4.3 c/s结构的优点111.5 api hook技术简介111.6 casyncsocket类的简单介绍132 远程通信与控制系统分析152.1 系统基本情况描述152.2 系统可行性分析162.2.1 经济可行性172.2.2 技术可行性172.2.3 操作可行性172.3 功能需求分析182.4 系统流程图19
10、3 远程通信与控制程序设计213.1 系统设计使用工具213.2 系统模块的设计213.2.1 模块设计213.2.2 屏幕监控模块设计213.2.3 文件操作模块设计233.2.4 注册表操作模块设计233.2.5 发送信息模块设计243.2.6 api hook模块设计243.3 客户端与服务器连接设计243.4 系统主要模块实现253.4.1 屏幕监控模块253.4.2 文件操作模块273.4.3 注册表操作模块273.4.4 api hook模块294 系统实现与测试304.1 软件测试基础304.1.1 软件测试的目标304.1.2 软件测试常用方法304.2 本系统采用的测试方法3
11、14.2.1 连接测试314.2.2 文件操作测试334.2.3 注册表操作测试364.2.4 发送信息测试394.2.5 屏幕控制测试404.2.6 测试结论42总 结43致 谢44参考文献45前言随着计算机网络的飞速发展以及网络技术的日益普及和大众化,人们可以很方便地从internet上获取和自己工作生活密切相关的信息,世界也真正变成一个地球村,我们可以和世界上其他任何一个人通过计算机网络进行沟通,信息资源达到了高度的共享。从这一点得到启发,希望能设计一个远程控制系统,通过它可以在家里控制办公室里的计算机。如果你是软件开发商,你的员工可以通过它在办公室里远程为客户配置系统、对产品进行维护,
12、如果客户向你报告软件产品出现问题你可以远程对产品进行调试,最终解决问题。这样员工就不会因长期的劳苦奔波而抱怨,用户也不会因为你不能及时解决问题而和你讨价还价,当然,也为公司节约了人力、财力和物力。远程控制软件一般分两个部分:一部分是客户端程序client,另一部分是服务器端程序server,在使用前需要将客户端程序安装到主控端电脑上,将服务器端程序安装到被控端电脑上。它的控制的过程一般是先在主控端电脑上执行客户端程序,像一个普通的客户一样向被控端电脑中的服务器端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程控制命令,控制被控端电脑中的各种应用程序运行,
13、这种远程控制方式称为基于远程服务的远程控制。通过远程控制软件,可以进行很多方面的远程控制,包括获取目标电脑屏幕图像、窗口及进程列表等等。远程控制具有一下优点:便于用户能够在任何地方通过网络及时,快速的访问,控制自己的主机。特别是对于网络管理员,技术服务人员来说,远程控制提供了一个便捷,高效的手段。当然,远程控制软件是一把双刃剑,有优点就会有缺点,它存在比较严重的安全隐患。一方面给用户和网络管理员工作带了很大的方便,另一方面也给一些居心不良者留下后门。形成很多木马程序。这就需要对软件在设计方面做一些安全考虑。1 远程通信与控制技术概述1.1 课题背景通常企业内部或者it公司的客户技术支持部门都有
14、技术支持业务,其任务是通过电话解答疑难问题,努力减少技术人员到现场服务或者让用户把设备送到支持中心进行维护。这种技术支持方式尽管被普遍采用,但效率不高而且大大增加了技术支持成本。通常,技术支持必须依赖技术人员和用户之间的口头交流来进行,这种交流既耗时又容易出错。许多商业用户对计算机知之甚少,然而当遇到问题时,他们必须向技术人员提供故障情报及相关操作。在尝试解决问题时,技术人员可能指导用户执行一系列复杂的过程,而这些过程对用户来说或许完全不熟悉;如果用户不能正确的按要求操作,反而使问题恶化。此外,如果通过电话不能解决问题,那么在技术人员亲自到用户现场解决问题之前,计算机将无法继续使用,导致工作延
15、误。电脑中的远程控制技术,始于dos时代,只不过当时由于技术上没有什么大的变化,网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意。但是,随着网络的高度发展,电脑的管理及技术支持的需要,远程操作及控制技术越来越引起人们的关注。远程控制一般支持下面的这些网络方式:lan、wan、拨号方式及互联网方式。此外,有的远程控制软件还支持通过串口、并口、红外端口来对远程机进行控制(不过这里说的远程电脑,只能是有限距离范围内的电脑了)。传统的远程控制软件一般使用netbeui、netbios、ipx/spx、tcp等协议来实现远程控制,不过,随着网络技术的发展,很多远程控制软件提供通过we
16、b页面以java技术来控制远程电脑,这样可以实现不同操作系统下的远程控制。 tcp协议远程控制主要有windows系统自带的远程桌面、pcanywhere(赛门铁克公司)等,网上98%的远程控制软件都使用tcp协议来实现远程控制(包括上述几款),使用tcp协议的远程控制软件的优势是稳定、连接成功率高;缺陷是双方必须有一方具有公网ip(或在同一个内网中),否则就需要在路由器上做端口映射。这意味着你只能用这些软件控制拥有公网ip的电脑,或者只能控制同一个内网中的电脑(比如控制该公司里其它的电脑)。你不可能使用tcp协议的软件从某一家公司的电脑,控制另外一家公司的内部电脑,或者从网吧、宾馆里控制你办
17、公室的电脑,因为他们处于不同的内网中。80%以上的电脑都处于内网中(使用路由共享上网的方式即为内网),tcp软件不能穿透内网的缺陷,使得该类软件使用率大打折扣。但是目前很多远程控制软件支持从被控端主动连接到控制端,可以一定程度上弥补该缺陷。udp协议远程控制与 tcp 协议远程控制不同,udp传送数据前并不与对方建立连接,发送数据前后也不进行数据确认,从理论上说速度会比tcp快(实际上会受网络质量影响)。最关键的是:使用udp协议可以利用udp的打洞原理(udp hole punching技术)穿透内网。从而解决了tcp协议远程控制软件需要做端口映射的难题。这样,即使双方都在不同的局域网内,也
18、可以实现远程连接和控制。qq、msn、网络人远程控制软件、xt800的远程控制功能都是基于udp协议的。你会发现使用穿透内网的远程控制软件无需做端口映射即可实现连接,这类软件都需要一台服务器协助程序进行通讯以便实现内网的穿透。由于ip资源日益稀缺,越来越多的用户会在内网中上网,因此能穿透内网的远程控制软件,将是今后远程控制发展的主流方向。1.2 目的以及意义本文正是在上文提到的背景下提出的,目的就是为了解决计算机的远程操作,降低企业对软件的后期维护成本,提高计算机远程通信能力的减少误操作率来提升远程工作者的工作效率,设计出一款计算机网络远程控制系统。远程控制系统能使技术人员直接操作远程计算机,
19、就像操作本地机器一样,无须用户介入,技术人员技能得到该机器的问题的第一手材料,从而加快了问题的解决。实际上,使用远程控制工具的技术人员能够做到解答疑难问题,安装和配置软件,把软件下载到用户计算机上,配置应用程序和系统软件设置并可通过实际操作培训用户。总之,本毕业设计题目的设计与实现具有很大的现实意义。1.3 c+及编程模式简介1.3.1 visual c+简介microsoft visual c+是microsoft公司推出的开发win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设
20、置就可使其生成的程序框架支持数据库接口、ole2,winsock网络、3d控制界面。它以拥有“语法高亮”, intellisense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。visual c+的资源编辑器能以所见即所得的形式直接编辑程序的用户界面,为所有资源分配id标识号。classwizard能把对话框模板与生成的类定义或与已有的类代码连接起来,为
21、菜单项、控制等资源生成空的处理函数模板,创建消息映射条目,并将资源id与处理函数连接起来。通过使用appwizard,程序员的编程工作便简化为用资源编辑器直观的设计界面,完善对话框类代码,在空的处理函数模板处填写响应用户操作的代码,这是一种比较完善的可视化编程方法。但产品名“visual c+”也容易误导人,让人认为自己使用的是一个与microsoft visual basic类似的完全可视化的系统。然而,使用visual c+,开发人员必须真正地阅读和编写c+代码。visual c+向导可以节省时间和提高精度,但是,程序员也必须理解向导产生的代码,并且,最重要的是,还必须理解mfc库的结构和
22、windows操作系统的内部工作方式。1.3.2 mfc应用程序框架mfc实际上是微软提供的,用于在c+环境下编写应用程序的一个框架和引擎,vc+是windows下开发人员使用的专业c+ sdk(sdk,standard software develop kit,专业开发平台),mfc就是挂在它之上的一个辅助软件开发包,mfc作为与vc+血肉相连的部分(注意c+和vc+的区别:c+是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而vc+只是一个编译器,或者说是一种编译器+源程序编译器的ide,ws,platform,这跟pascal和delphi的关系一个道理,pascal是delp
23、hi的语言基础,delphi使用pascal规范来进行win下应用程序的开发和编译,却不同于basic语言和vb的关系,basic语言在vb开发出来被应用的年代已经成了basic语言的新规范,vb新加的basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使vb既是一个ide,又成长成一个新的程序设计语言),mfc同bc+集成的vcl一样是一个非外挂式的软件包,类库,只不过mfc类是微软为vc+专配的。 mfc是win api与c+的结合,api,即微软提供的windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(
24、如我是一方,微软是一方,borland就是第三方)的编程语言来进行对windows下应用程序的开发,使这些被开发出来的应用程序能在windows下运行,比如vb,vc+,java,delhpi编程语言函数本质上全部源于api,因此用它们开发出来的应用程序都能工作在windows的消息机制和绘图里,遵守windows作为一个操作系统的内部实现,这其实也是一种必要,微软如果不提供api,这个世上对windows编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到mfc是微软对api函数的专用c+封装,这种结合一方面让用户使用微软的专业c+ sdk来进行windows下应用程序的开发变得
25、容易,因为mfc是对api的封装,微软做了大量的工作,隐藏了好多程序开发人员在windows下用c+ & mfc编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了mfc对类封装中的一定程度的的冗余和迂回,但这是可以接受的。mfc不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在windows(用mfc编写的程序绝大部分都在windows中运行)中
26、实现内部处理的类,如数据库的管理类等,学习中最应花费时间的是消息和设备环境,对c+和mfc的学习中最难的部分是指针,c+面向对象程序设计的其它部分,如数据类型,流程控制都不难,建议学习数据结构c+版。 mfc是微软封装了的api。windows作为一个提供功能强大的应用程序接口编程的操作系统,的确方便了许多程序员,传统的win32开发(直接使用windows的接口函数api)对于程序员来说非常的困难,因为,api函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码。mfc是面向对象程序设计与application framework的完美结合,他将传统的api进行了分类封装,并且
27、为使用者创建程序的一般框架。应用程序框架的一种定义是提供一般应用程序需要的全部面向对象软件组件的集成集合。c+流行的一个原因是它可以用类库扩充。类库是可在应用程序中使用的有关c+类的集合。应用程序框架是类库的超集。一般的类库只是一种孤立的类的集合,用来嵌入在任何程序中,但是,应用程序框架却定义了程序的结构。自从mfc库发布以来,mfc已经成为主要的windows类库。使用mfc类库构建应用程序具有以下优点。 l mfc库是c+的microsoft windows api。l 应用程序框架生成的应用程序使用了标准的结构,具有标准化的用户接口,这对具有标准用户界面的win32程序来说,可以极大的减
28、轻程序员的负担,使程序员不必过多地考虑界面,可把主要精力放在程序设计上,以提高程序设计的效率。l 使用应用程序框架的应用程序不仅小,而且运行速度快,具有很大的灵活性。mfc封装了win32 sdk中的几乎所有函数,能实现win32系统的任何功能。l mfc框架降低了编码的复杂性。l mfc库应用程序框架有丰富的特性,如:windows api的c+接口、通用的(非windows所特有的)类、“共用根对象”类层次结构、流线式多文档界面(mdi)应用程序支持等。l 强大的功能。除封装了大部分的win32 sdk函数外,mfc还提供了应用程序本身的数据和操作及activex、ole、internet
29、、winsock、dao(data access objects)、odbc(open database connectivity)等操作类。mfc框架的核心是文档/视图结构(document-view architecture),这是一个很好用、但又往往较难以入门的功能。简单的说,文档/视图结构就是将数据和对数据的观察或数据的表现(显示)相分离。文档仅处理数据的实际读、写操作,视图则是显示和处理数据的窗口,视图可以操作文档中的数据。1.3.3 mfc的消息映射在使用visual c+进行win32程序设计时,消息映射是一个非常重要的概念。windows应用程序是消息驱动的,应用程序不能直接得
30、到用户所做的操作,如鼠标按键、键盘输入和窗口移动等。这些操作由操作系统管理,操作系统检测到操作事件后,便向相关的应用程序发送消息,应用程序响应这些消息来完成用户的操作。 1、消息 windows中的消息是操作系统与应用程序之间、应用程序与应用程序之间、应用程序各对象之间相互控制与传递信息的方式。消息的基本格式如下:message wparam lparammessage是消息名称;wparam是与消息相关的word型参数;lparam是与消息相关的long型参数。消息主要有以下3类。windows系统消息:windows系统向窗口发送的消息,由窗口(window)或视图(view)进行响应处理
31、。这类消息包括除wm_command消息之外的名称以wm_开始的其他消息。控制通知消息:控制或子窗口传给父窗口的wm_command通知的消息。命令消息:在响应用户接口操作时,将产生wm_command命令消息。其参数指定了用户接口的标识号,如菜单项和按钮等id号。 2、消息映射过程在使用appwizard创建应用程序时,mfc应用程序框架设置了相应的消息处理函数来响应消息,以完成相应的操作。消息处理函数是某些类(通常是窗口类)的成员函数和程序员在其中编写响应消息时应进行操作的代码。框架将消息和它们的处理函数连接起来就是消息映射。消息映射使应用程序在接收到消息时调用对应的消息处理函数来响应和处
32、理消息。classwizard在创建新类时将为其创建一个消息映射,并为每个类能响应的消息和命令增加对应的处理函数。在源代码中,消息映射开始于begin_message_map宏,结束于end_message_map宏,中间由一系列预定义的被称为“条目宏”的宏组成。其基本格式如下:begin_message_map (classname, parentclassname)/afx_msg_map (classname)条目宏1条目宏2条目宏3/afx_msg_mapend_message_map ()其中classname为拥有消息映射的当前类名,parentclassname为当前类的父类名。
33、条目宏定义了类所处理的消息与其对应的函数。常用的条目宏类型如表1.1所示。windows消息的处理函数在cwnd类中进行了预定义,类库以消息名为基础定义这些处理函数的名称,且mfc要求所有消息处理函数声明为afx_msg类型。例如,消息wm_paint的处理函数在cwnd类中的声明如下:afx_msg void onpaint();表1.1 消息映射条目宏消息类型宏格式说明windows消息on_wm_xxxxwm_xxxx为windows消息名命令on_command(id,function)id为命令标识号,function为处理函数名更新命令on_update_command_ui(id
34、,function)id为命令标识号,function为处理函数名控制通知on_xxxx(id,function)id为控制标识号,function为处理函数名用户定义消息on_message(id,function)id为消息标识号,function为处理函数名用户注册消息on_registered_message(id,function)id为消息标识号,function为处理函数名通过classwizard在派生类中用同样的原型定义处理函数并为该函数生成消息映射条目,然后由程序员编写处理函数代码,并在派生类中覆盖了其父类的消息处理函数。在有些情况下,必须在派生类的消息处理函数中调用其父类
35、的消息处理函数,使windows和基类能对消息进行处理。classwizard将在生成的处理函数中建议是否应调用父类的消息处理函数及调用的次序。除此之外,用户定义和注册的消息、命令和控制通知都没有默认的处理函数,需要在定义时声明,一般根据其id名称来为函数命名。1.4 系统架构的模式c/s结构,即client/server(客户机/服务器)结构,软件系统体系结构,通过将任务合理分配到client端和server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。1.4.1 c/s结构模式client/server结构,它的发展经历了两个阶段:从两层结构到三层结构。两层结构,它由两部分构成
36、,前端是客户机,通常是pc,主要完成用户界面显示,接受数据输入,校验数据有效性,向后台数据库发请求,接受返回结果,处理应用逻辑;后端是服务器,运行dbms,提供数据库的查询和管理。应用逻辑主要在前端,如在后端则是存储过程的形式。三层结构则利用中间件将应用分为表示层、业务逻辑层和数据存储层三个不同的处理层次。三个层次的划分是从逻辑上来分的,具体的物理分法可以有多种组合。基于三层结构的应用系统不但具备了大型机系统稳定、安全和处理能力高等特性,同时拥有开放系统成本低、可扩展性强、开发周期短等优点。而中间件作为构造三层结构应用系统的基础平台,提供了以下主要功能:负责客户机与服务器间、服务器间与服务器间
37、的联接和通讯;实现应用与数据库的高效连接;提供一个三层结构应用的开发、运行、部署和管理的平台。1.4.2 tcp c/s通信原理tcp client/server的通信原理如图1.1所示,服务器端首先监听一个固定端口,客户端再连接到服务端,此时服务端执行accept操作,以接受客户端的连接。此时连接创建成功,则进行数据传输,待数据传输完毕,服务端和客户端就断开连接。监听listen()server端client端创建socket()接受accept()数据传输send()receive()断开close()连接connect()创建socket()数据传输send()receive()断开cl
38、ose()图1.1 client/server的通信流程1.4.3 c/s结构的优点client/server技术在目前程序开发中得到了广泛的应用,这种技术的优点在于它将处理工作按照一定的比例分配到客户端和服务器上去执行,这样减少了网络传输的工作量,从而合理地利用了资源,提高了应用程序开发的效率。由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。1.5 api hook技术简介hook是windows中提供的一种用以替换dos下“中断”的系统机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就会受到系统的通知,这
39、时程序就能在第一时间对该事件做出响应。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。api hook技术是一种用于改变api执行结果的技术,microsoft 自身也在windows操作系统里面使用了这个技术,如windows兼容模式等。 api hook 技术并不是计算机病毒专有技术,但是计算机病毒经常使用这个技术来达到隐藏自己的目的。在windows系统下编程,应该会接触到api函数的
40、使用,常用的api函数大概有2000个左右。今天随着控件,stl等高效编程技术的出现,api的使用概率在普通的用户程序上就变得越来越小了。当诸如控件这些现成的手段不能实现的功能时,我们还需要借助api。最初有些人对某些api函数的功能不太满意,就产生了如何修改这些api,使之更好的服务于程序的想法,这样api hook就自然而然的出现了。我们可以通过api hook,改变一个系统api的原有功能。基本的方法就是通过hook“接触”到需要修改的api函数入口点,改变它的地址指向新的自定义的函数。api hook并不属于msdn上介绍的13类hook中的任何一种。windows系统下的编程,消息m
41、essage的传递是贯穿其始终的。hook与消息有着非常密切的联系,它的中文含义是“钩子”,这样理解起来不难得出“hook是消息处理中的一个环节,用于监控消息在系统中的传递,并在这些消息到达最终的消息处理过程前,处理某些特定的消息”。这也是hook分为不同种类的原因。在windows系统下编程,经常接触到api函数的使用,常用的api函数大概有2000个左右。今天随着控件,stl等高效编程技术的出现,api的使用概率在普通的用户程序上就变得越来越小了。当诸如控件这些现成的手段不能实现的功能时,因此还需要借助api。最初有些人对某些api函数的功能不太满意,就产生了如何修改这些api,使之更好的
42、服务于程序的想法,这样api hook就自然而然的出现了。通过api hook,改变一个系统api的原有功能。基本的方法就是通过hook“接触”到需要修改的api函数入口点,改变它的地址指向新的自定义的函数。api hook并不属于msdn上介绍的13类hook中的任何一种。所以说,api hook并不是什么特别不同的hook,它也需要通过基本的hook提高自己的权限,跨越不同进程间访问的限制,达到修改api函数地址的目的。1.6 casyncsocket类的简单介绍casyncsocket类是mfc对winsock api的较底层封装,通过类名就知道这是一个异步非阻塞socket类。casy
43、ncsocket:create()有一个参数指明了使用者想要处理哪些socket事件,使用者关心的事件被指定以后,这个socket默认就被用作了异步方式。casyncsocket的create()函数,除了创建了一个socket以外,还创建了个csocketwnd窗口对象,并使用wsaasyncselect()将这个socket与该窗口对象关联,以让该窗口对象处理来自socket的事件(消息),然而csocketwnd收到socket事件之后,只是简单地回调casyncsocket:onreceive()等虚函数。所以casyncsocket的派生类,只需要在这些虚函数里添加发送和接收的代码。
44、客户端在使用casyncsocket:connect()时,往往返回一个wsaewouldblock的错误(其它的某些函数调用也如此,如:send(),receive()等),实际上这不应该算作一个错误,它是socket在提醒用户,由于使用了非阻塞socket方式,所以(连接)操作需要时间,不能瞬间建立。因此可以在程序中等待,等它连接成功为止,于是许多程序员就在调用connect()之后,sleep(0),然后不停地用wsagetlasterror()或者casyncsocket:getlasterror()查看socket返回的错误,直到返回成功为止。这是一种错误的做法,不能达到预期目的。事
45、实上,可以在connect()调用之后等待casyncsocket:onconnect()事件被触发,casyncsocket:onconnect()是要表明socket要么连接成功了,要么连接彻底失败了。在客户端调用connect()连接服务端,服务端accept()的做法就是在监听的socket收到onaccept()时,用一个新的casyncsocket对象去建立连接,例如: void cmysocket:onaccept(int errcode) cmysocket* psocket = new cmysocket; accept( *psocket ); 于是,上面的psocket和
46、客户端建立了连接,以后的通信就是这个psocket对象去和客户端进行,而监听的socket仍然继续在监听,一旦又有一个客户端要连接服务端,则上面的onaccept()又会被调用一次。当然psocket是和客户端通信的服务端,它不会触发onaccept()事件,因为它不是监听socket。casyncsocket类为我们使用socket提供了极大方便。建立socket的wsastartup过程和bind过程被简化成为create过程,ip地址类型转换、主机名和ip地址转换的过程中许多复杂的变量类型都被简化成字符串和整数操作,特别是casyncsocket类的异步特点,完全可以替代繁琐的线程操作。
47、mfc提供了大量的类库,灵活使用这些类库,便会大大提高编程的效率。2 远程通信与控制系统分析2.1 系统基本情况描述电脑中的远程控制技术,始于dos时代,只不过当时由于技术上没有什么大的变化,网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意。但是,随着网络的高度发展,电脑的管理及技术支持的需要,远程操作及控制技术越来越引起人们的关注。传统的远程控制软件一般使用netbeui、netbios、ipx/spx、 tcp/ip等协议来实现远程控制,不过,随着网络技术的发展,目前很多远程控制软件提供通过web页面以java技术来控制远程电脑,这样可以实现不同操作系统下的远程控制随着
48、计算机技术的不断发展,人们要处理的任务也越来越多,工作地点也有可能是多个,在计算机使用的过程中就会遇到这样那样的问题,从而使得工作变得更加繁重。如果将计算机系统进行还原或重装,一些重要资料有可能将会丢失。寻求一种方便、高效的方法对出现故障的系统进行修复已经成为人们的迫切需要。本课题设计的使用,能帮助技术人员方便、高效的修复远程系统软件,提高人们的工作效率,降低系统维护的成本。远程控制和木马有很大的相似之处,譬如说现在的灰鸽子远程控制软件企业版,它具有两种远程控制形式:服务端自动上线连接型和客户端主动连接控制型,同时拥有两者的所有功能。它可以被当作木马来作为入侵远程电脑的工具,并且监控远程摄像头
49、的功能更使对方失去个人私隐。但如果客户端为主动方式连接服务端时,服务端可以接受多个客户连接,所以视频、语音的发送可以实现远程教学,远程协助等功能。因此远程控制和木马两者几乎找不到界线,但从最初的用途来说,它们应该有以下区别的:l 远程连接的方式不同:木马属于服务端自动上线连接型,即一运行就上线连接指定ip,并且如果控制端没运行,它会不断重新连接;而远程控制属于客户端主动连接控制型,方便之处是可以从不同ip的电脑去连接已经安装服务端的主机。l 隐藏机制不同:木马一般注册为系统服务,伪装为类似系统进程的程序,用户不能轻易关闭它;而远程控制服务端可以按其应用考虑是否隐藏和是否能够被关闭。l 用途不同
50、:木马主要是达到窃取别人主机各种信息的目的;而远程控制可以作为网管管理机房的工具,也可以是老师远程教学的助手,更是远程办公的理想软件。远程控制因为进一步克服了由于地域性差异所造成的不便性,所以在网络管理、远程技术支持、远程交流、远程办公等领域有着非常广泛的应用。因此,设计一个远程控制软件,不光包含很强的网络处理技术,还具有广泛的实用价值。远程控制的主要应用如下:l 远程办公:这种远程的办公方式不仅大大缓解了城市交通状况,减少了环境污染,还免去了人们上下班路上奔波的辛劳,更可以提高企业员工的工作效率和工作兴趣。l 远程技术支持:通常,远距离的技术支持必须依赖技术人员和用户之间的电话交流来进行,这
51、种交流既耗时又容易出错。许多用户对电脑知道得很少,然而当遇到问题时,他们必须向无法看到电脑屏幕的技术人员描述问题的症状。有了远程控制技术,技术人员就可以远程控制用户的电脑,就像直接操作本地电脑一样,只需要用户的简单帮助就可以得到该机器存在的问题的第一手材料,很快就可以找到问题的所在,并加以解决。l 远程教学:教师和学生之间可以利用这种远程控制技术实现教学问题的交流,学生可以不用见到老师,就得到老师手把手的辅导和讲授。学生还可以直接在电脑中进行习题的演算和求解,在此过程中,教师能够轻松看到学生的解题思路和步骤,并加以实时的指导。l 远程维护和管理:网络管理员或者普通用户可以通过远程控制技术为远端
52、的电脑安装和配置软件、下载并安装软件修补程序、配置应用程序和进行系统软件设置。2.2 系统可行性分析可行性研究的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的方法。可行性分析实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。要研究每一种解法的可行性,一般说来,应从经济可行性、技术可行性、操作可行性等方面研究可行性。2.2.1 经济可行性本课题设计成本低廉,要的只是两个isp分发的ip地址,而且这也多用于局域网或企业网等内网,就更谈不上成本上的问题。但是如果需要对程序的质量提高可以购买加密算法,对
53、传输数据进行加密。2.2.2 技术可行性本课题设计所用到的一系列的技术已是累积了几十年的技术,这些技术在这么多年的发展中并没有被淘汰,反而是越来越来热门。当初远程协助这门技术在dos时代就已经存在,只是受网络的制约,但是此时这门技术还是受网络技术制约着。网络流量的问题是造成所有通信程序的不稳定性的罪魁祸首。但是本课题设计在局域网中是完全能够实现的,而且也是专门为企业网内部所设计,因为数据信息没被加密,如果想走internet,则需建立vpn。2.2.3 操作可行性根据系统的操作是否简单易懂,是否为用户所接受,从操作的角度研究系统的可行性。本课题设计操作简单,客户端安装后无需其它操作,服务端待客
54、户端自动连接后,则可以对其屏幕、文件、注册表等进行操作,完全像操作本地机器一样简单。综合以上三方面的可行性分析,本课题设计的操作是可行的。2.3 功能需求分析功能需求是对软件系统的一项基本需求,这方面的需求指定系统必须提供的服务。根据对一般的远程协助的调查了解,该系统应该至少包含以下几个功能:1、服务端对客户端的屏幕监控远程协助系统就是要解决那些难以用语言描述的软件问题,协助端(服务端)如果能实时的看见被协助端(客户端)的系统桌面,那将大大提高解决问题的效率。当然,为了更方便的操作,协助端还必须能控制被协助端的鼠标和键盘。系统服务端桌面监控的用例图如图2.1所示:获取远程桌面控制远程鼠标控制远
55、程键盘远程协助系统 图2.1 屏幕控制用例图2、服务端对客户端文件操作服务端如果仅仅能监控客户端桌面,那帮助也许没那么大,比如客户端要修复一些文件,而在客户端本地硬盘中又没有相应的修复工具,此时服务端也是无能为力的。当然,可以通过qq、msn等通讯工具传输,这样做毕竟也是很麻烦的,因此服务端能实现对客户端的文件远程操作则是不可或缺的。文件操作包括:上传文件、下载文件、创建文件夹、执行远程程序等等。该功能模块的用例图如图2.2所示: 上传文件到客户端下载客户端文件远程协助系统创建文件夹执行远程程序图2.2 文件操作用例图3、 服务端对客户端的高级操作服务端向客户端发送一条命令,客户端针对该命令分
56、别枚举出客户端的注册表、系统服务、进程等,再以文本方式发送给服务端,服务端获取到信息后,则可以对注册表、系统服务、进程做删除、添加、结束等操作。2.4 系统流程图首先运行服务器端,然后安装客户端后,客户端安装好之后就会不断的尝试连接服务器,连接成功后就会想服务器端发送消息表明已经登录了,接着服务器端就会发送命令给客户端,客户端根据服务端发送的命令执行屏幕、文件注册表、服务、进程等操作。执行完之后,客户端就会发送一个消息给服务器端,该消息是执行的结果,服务器端收到消息后,就会将消息显示出来。系统流程图如图2.3所示:连接服务端连接成功?客户端程序服务端程序接受并添加客户端信息失败成功发送登录信息
57、发送操作命令解析命令屏幕操作文件操作注册表操作服务操作进程操作发送结果显示结果是否退出?退出系统是否 图2.3 系统流程图3 远程通信与控制程序设计经过需求分析阶段,在软件需求分析阶段已经弄清楚了各种需求,较好地解决了所开发的系统“做什么”的问题,并已在软件需求说明书和数据要求说明书中详尽和充分地阐明了这些需求以后,下一步就要着手对软件系统的结构、数据结构、用户界面等进行设计。3.1 系统设计使用工具本系统采用visual c+ 6.0作为开发工具,visual c+ 6.0源代码编辑器功能强大,使用非常方便。它提供了语句自动完成功能,编辑输入源程序时能自动显示当前对象的成员变量和成员函数,并表明函数的参数类型。调试使用vmware workstation虚拟机搭建实验环境,分别开启客户端主机和服务端主机。3.2 系统模块的设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术升级项目合同借款协议
- 合同管理培训与人才培养的建议
- 餐饮业原料采购合同(安全食品专用)
- 劳动合同范本:外来专业技术人才
- 商业地皮交易合同书
- 苏州市模范劳动合同样本
- 四人合作创业股份分配合同范本
- 年度合作合同:速记服务条款
- 液化气采购框架合同
- 购物中心投资合同样本
- 护理质控护士竞聘
- 医学课件炎症性肠病4
- 2019年青岛版(六三制)五年级数学下册全册教案
- 2024年4月自考00263外国法制史试题及答案
- 《井中分布式光纤声波传感数据采集规程》标准报批稿
- 人音版 音乐 八年级下册 第一单元 我和你教案
- 教育戏剧在小学教育中的应用研究 论文
- 2024年江苏经贸职业技术学院单招职业适应性测试题库及参考答案
- 2024年青岛港湾职业技术学院单招职业适应性测试题库必考题
- python程序设计-说课
- 《糖尿病患者血脂管理中国专家共识(2024版)》解读
评论
0/150
提交评论