简论远程控制系统设计与开发被控端模块设计大学本科毕业论文_第1页
简论远程控制系统设计与开发被控端模块设计大学本科毕业论文_第2页
简论远程控制系统设计与开发被控端模块设计大学本科毕业论文_第3页
简论远程控制系统设计与开发被控端模块设计大学本科毕业论文_第4页
简论远程控制系统设计与开发被控端模块设计大学本科毕业论文_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

SimpleRemoteControlSystem——TheDesignofControlledTerminalAbstractWiththerapid

developmentof

thewideuseofcomputerand

network

hasbroughtabroad

play

totheremote

controlsystem,

peoplecanbe

controlled

throughthesimple

terminal

completecontrol

network

attheotherend,

thuscompletingthepowerfulcontrolfunction,

obtainany

informationofcontrolled

machine,

inthiswayisknownasremote

control.Withtherapid

developmentofnetworktechnology,

theoperatingsystemusesthe

hostcomputersinthenetwork

havethe

functionofremotecontrol,

remotecontrolprovides

greatceconveniencetothe

networkadministrator.

Anditalsogreatly

convenientways

to

hackersandcriminals,

by

remotecontrol,

very

easy

tosteal

userinformation,

network

privacy,

maliciousdamageto

thecomputersystem.

Master

someknowledgeof

remote

control,

andtoprevent

thethreattonetworksecurity

remotecontrol

brings,

isnowinthenetwork

operatingsystem,theadministrator

ofarequired

course.Thesimpleremotecontrol

systemconsistsofamaincontrol

endandthe

end

oftwoparts.

Thehost

for

theimplementationofvarious

control

andmonitortheoperation

ofthecomputerconnectedtoanetwork,

thehost

receivesdataforanalysis,

interpretationandimplementation.

Thesystemcanimplementthecontrolledend

ofgettingtheinformationofcontrolledterminal,

systemcontrol,end

themousecontrol,

thecontrolledterminal

keyboardcontrol,

accusedofsendingend

processcontrol

andmessage

function.Inthispaper,

thetheoryofremotecontrolandthe

maintechnology

isbrieflyintroduced,

aftertheanalysis,

adetaileddescriptionofthe

hostsofthedesignandimplementationof

thesystem,

finally

givesthemeasurementresults.Keywords:RemotecontrolClient/ServermodeSocketInformationsecurityPAGE目录1引言 11.1本课题的研究背景和意义 11.2国内外研究现状 21.3本课题的主要研究的内容 21.4作者的主要工作 32简单远程控制系统相关理论研究 32.1远程控制系统概述 32.2Socket套接字 42.3客户端/服务器(C/S)模式 72.4因特网协议 73简单远程控制系统总体结构 83.1系统规格说明 83.1.1简单远程控制系统的概貌 83.1.2各模块功能要求 83.1.3性能要求 93.1.4运行要求 93.2数据要求 93.3用户系统描述 94简单远程控制系统的功能模块的设计 94.1简单远程控制系统的主体设计 94.2简单远程控制系统的系统功能的实现 105简单远程控制系统功能模块的编程及实现 115.1简单远程控制的连接功能实现 115.2简单远程控制的被控端获取信息的实现 125.3简单远程控制的向被控端发送消息的实现 135.4简单远程控制的被控端键盘和鼠标的开启和锁定的实现 145.5简单远程控制的被控端进程的浏览和杀死功能的实现 165.6简单远程控制的被控端执行CMD命令的实现 186测试 196.1测试环境 196.2测试过程以及结果 19结论 21参考文献 221引言1.1本课题的研究背景和意义随着社会、科技、经济的不断发展,远程控制技术的应用范围也在不断拓展,从最初银行、军事、机要部门等特殊行业领域的应用已经延伸到了今天的电业部门、商业部门、普通工矿企业、道路交通领域、学校教学应用、卫生医疗部门以及宾馆酒店行业等等,其卓越的功能也日益受到各个应用行业的重视和青睐,但是许多远程监控软件都需要配有硬件设备,这不仅使得实际应用的成本升高,而且也使实施应用增加了技术障碍。虽然有诸多问题的存在,但是我们应该认识到远程控制技术的研究,不仅充分利用了现有资源,拓宽了因特网的利用范围,而且也使远程控制能够减少成本扩大远程化距离,实现任意节点的访问机制,并进入一般的应用领域,比如,进入家庭,人们通过因特网控制家用电器,采用因特网作为远程控制平台,是一项很有前途和潜力的技术,另外它可以应用到设备远程诊断、远程监测、遥控等领域。远程控制软件一般分两个部分:一部分是客户端程序Client,另一部分是服务器端程序Server,在使用前需要将客户端程序安装到主控端电脑上,将服务器端程序安装到被控端电脑上。它的控制的过程一般是先在主控端电脑上执行客户端程序,像一个普通的客户一样向被控端电脑中的服务器端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程控制命令,控制被控端电脑中的各种应用程序运行,我们称这种远程控制方式为基于远程服务的远程控制。通过远程控制软件,我们可以进行很多方面的远程控制,包括获取目标电脑屏幕图像、窗口及进程列表;记录并提取远端键盘事件(击键序列,即监视远端键盘输入的内容);可以打开、关闭目标电脑的任意目录并实现资源共享;提取拨号网络及普通程序的密码;激活、中止远端程序进程;管理远端电脑的文件和文件夹;关闭或者重新启动远端电脑中的操作系统;修改Windows注册表;通过远端电脑上、下载文件和捕获音频、视频信号等。前面所讲的是一台电脑对一台电脑的情况,其实,基于远程服务的远程控制最适合的模式是一对多,即利用远程控制软件,我们可以使用一台电脑控制多台电脑,这就不必为办公室的每一台电脑都安装一个调制解调器,而只需要利用办公室局域网的优势就可以轻松实现远程多点控制了。在进行一台电脑对多台远端电脑进行控制时,远程控制软件似乎更像一个局域网的网络管理员,而提供远程控制的远程终端服务就像极了办公室局域网的延伸。这种一对多的连接方式在节省了调制解调器的同时,还使得网络的接入更加安全可靠,网络管理员也更易于管理局域网上的每一台电脑。因特网的出现及其发展推动了科学技术的各个方面,并使之取得了巨大的进步,利用因特网,可以使远程控制技术得到大范围的应用,从而方便人们的生活。1.2国内外研究现状目前,基于因特网的远程控制国内外都有不同程度的研究。相对来说,由于西方国家在信息技术和计算机控制技术的发展上的优势,他们在研究远程控制方面相对早些,而且有些公司有相关的初级产品问世。国内由于因特网的飞速发展,近几年也开始积极的研究。国内外在基于因特网的远程机器人控制方面的研究相对其他领域要多一些。例如美国伯克立大学研制的是一个通过因特网远程控制的种植花草工业机器人手臂。拥护通过机器人手臂上的摄像机所传输的图像,对这个花园内进行简单的操作。这些基于因特网的远程控制系统普遍采用了客户/服务器网络模型,现场采用摄像机来监视,并通过网络发出指令。当前,由于网络基础设施还不够完善,所以监视图像由于数据量大,其传输时间过长。即使是采用了数据压缩技术,也仍然有很大的数据量需要传输,因而由此产生的远程控制时间延迟也必然很大。此外,这类系统普遍采用瘦客户/肥服务器的网络模型,监控端的控制操作功能过于简单,都只是发一些简单的指令,而不能实现一些复杂的必要的逻辑处理功能。第三,这类系统在处理上由于时间延迟影响现场控制系统不稳定时,仍然采用的执行-等待-执行-等待的单步执行流程,生产设备运行效率相当低下,第四,大量的采用以图像监视为主的方式,虽然可以使得监控人员更能直观的感受到现场情况,便与监控人员的控制;但是我们应该注意到,有些设备的被监控状态是难以用图像方式表示出来的,比如温度、速度、压力这类精确的数值量;此外有些采用图像传输的数据量也可以采用通过数据传输关键数据以在监控端进行实况模拟图,这样就会减少数据量,而使数据传输速度大大提高。1.3本课题的主要研究的内容远程控制是一个具有重要的研究价值的课题,它在工业,国防等各个方面有着广泛的需求。然而,使用传统的方式,由于成本、技术、维护、传输距离等方面的问题,远程控制并没有很好的推广和利用。先进由于因特网的出现,使得成本低廉的远距离通信轻易的变成了现实。于是采用因特网作为远程控制平台,将远程控制的状态、命令等控制数据和信息通过因特网传输。既减少了开发成本、也增加远程控制的灵活性,人们也不必再为了实现一个临时的远程控制,而需要重建一套远程控制系统。基于Windows的远程控制软件开发毕业设计的主要任务是要求做出从系统角度的远程控制模式,并制作相应实用软件。采用服务器(Server),客户端(Client)模式,使用Socket编程的基本原理及Windows的消息系统。实现基本的远程控制要求,界面新颖友好。用VC开发!本课题的研究主要内容主要包括以下几个方面:1.简单远程控制系统相关理论研究2.简单远程控制系统总体结构3.简单远程控制系统的功能模块的设计4.简单远程控制系统功能模块的编程实现1.4作者的主要工作该系统软件是本人与张桐瑞同学共同研究开发的,张桐瑞同学主要负责主控的设计与开发,本人主要负责被控端的设计与开发。本人在系统开发中的具体工作:1.搜寻与系统开发相关的资料,熟悉c++开发语言。2.完成被控端与主控端的连接。3.完成被控端模块的程序代码。4.与张桐瑞同学一起对系统进行调试和测试。5.归并相关系统开发文档,完成毕业论文的撰写。2简单远程控制系统相关理论研究本系统采用C/S工作模式,由主控端和被控端两部分组成,被控端作为客户端运行在目标计算机上,接收指令,根据指令执行相应的操作;主控端运行在用户计算机向被控端发送指令。编码上是利用c++进行编程,使用MicrosoftVisualC++6.0进行编译。2.1远程控制系统概述远程控制系统是以通信技术为基础的一门先进技术。正是由于通信技术的发展使得远程控制技术得到快速的发展。所有的远程控制系统几乎都可以无一例外的划分为:被控端(主要负责控制过程的实施)、网络、主控端(借助远程数据访问控制过程,进行控制)、三个子系统的构成。各部分分工协作,共同实现对设备的远程控制。在本软件设计中,采用典型的C/S结构,由客户端与服务端两部分构成。客

户/服务器模式的最显著特点是非对等作用,即客户相对于服务器处于不平等的地位,服务端提供服务,客户端提供请求。结构如图2.1结构图所示:主控端主控端被控端服务响应网络接口网络接口网络服务请求图2.1结构图2.2Socket套接字在远程控制软件中,对于主控机和受控机进行的数据通信所使用的主要技术就是网络编程技术和系统编程技术。随着计算机网络技术的发展TCP/IP协议,被集成到操作系统内核中时,相当于在操作系统中引入了一种新型的输入/输出操作,操作系统拥护进程与网络的交互作用比用户进程与传统的输入/输出设备互相作用复杂的多。首先,进行网络操作的两个进程不在同机器上,如何建立它们之间的联系?其次,有很多种网络协议,如何建立一种通用机制以支持多种协议?这些都是网络应用变成所要解决的问题。20世纪80年代初,美国政府的高级研究工程机构ARPA给加利福尼亚大学BERKELEY分校提供了奖金,让他们在UNIX操作系统下实现TCP/IP协议。在这个项目中,研究人员为TCP/IP网络通信开发了一个应用程序接口API。这个API就称为SOCKET(套接字)接口,今天SOCKET接口是TCP/IP网络最为通用的API,也是在INTERNET上进行应用开发最为通用的API。实际上,Socket在计算机中提供了一个通信端口(套接口)。通过这个端口,一台计算机可以与任何一台具有Socket接口的计算机通信。通信的接口是套接口,一个套接口是通信的一端,在这一端上可以找到与其对应的一个名字。一个正在被使用的套接口都有他的类型和与其相关的进程,套接口存在于通信域中。一个套接口通常和同一个域中的套接口交换数据(数据交换也可以穿越域的界限,但这时一定要执行某种解释程序。)应用程序在网络上传输,接受的信息都是通过这个套接口来实现。在应用开发中就像使用文件句柄一样,可以对Socket句柄进行读写操作。2.2.1系统调用socket()函数向应用程序提供套接字手段时的声明如下:SOCKETPASCALFARsocket(intaf,inttype,intprotocol);该函数有三个参数,其中参数af指定通信发生的区域,在DOS,Windows系统中支持AF_INET,它时网际网区域。参数type描述要建立套接字的类型。也就是指是流式套接字还是数据报套接字。参数protocol说明该套接字使用的协议,如果该参数为0,则表示使用默认的连接模式。Socket()函数根据这三个参数建立一个套接字,并将相应的资源分配给它,同时返回一个整形套接字句柄。2.2.2指定本机地址当一个套接字用socket()创建以后,bind()将套接字地址(主机地址和端口)与所创建的套接字编号联系起来,即将名字赋予套接字。bind()声明如下:intPASCALFARbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);bind()函数共有三个参数,其中参数s是由socket()函数调用返回的并且未连接的套接字句柄。参数name是赋给套接字s的本地地址。参数namelen指参数name的长度,调用成功,返回0;否则返回SOCKET_ERROR。2.2.3建立套接字连接建立套接字是要用connect()与accept()。connect()函数的原型声明如下:intPASCALFARconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);Connect()共有三个参数,其中s指要建立连接的本届套接字句柄。参数name指对方套接字地址结构的指针,对方套接字地址长度由参数namelen说明。如果调有成功,返回0;否则返回SOCKET_ERROR。Accept()函数原型声明如下:SOCKETPASCALFARaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen);该函数也由三个参数,其中参数s为本地套接字句柄,在做accept函数调用的参数前要先调用listen(),参数addr是指向客户方套接字地址结构的指针,用来接收连接实体的地址。addr的确切格式由套接字创建时建立的地址簇决定。参数addrlen为客户方套接字地址的长度。如果调用成功,accept()函数返回一个SOCKET类型的值。否则返回INVALID_SOCKET。Socket(),bind(),connect(),accept()这四个套接字系统调用可以晚上一个完全的通信建立,包括协议,本地主机地址和端口,目的地址和端口。socket()指定协议元,他的用法与是否为客户机和服务器,是否面向连接无关,bind()指定本机地址和端口号,时面向连接的。在服务器方必须调用bind()函数;2.2.4监听连接建立连接以后,服务器端要调用listen()函数,表明愿意接收连接,listen()要在accept()之前调用,原函数声明如下:intPASCALFARlisten(SOCKETs,intbacklog);该函数有两个参数,参数s标志一个本地已建立单尚未连接的套接字句柄,服务器愿意从它上面接收请求。参数backlog表示请求连接队列的最大长度,用于限制排队的请求个数,目前最大值为5。如果调用成功,listen()函数返回0;否则返回SOCKET_ERROR。2.2.5数据传输当连接建立以后,就可以传输数据了,通常调用send()和recv()函数。send()函数原型声明如下:intPASCALFARsend(SOCKETs,constcharFAR*buf,intlen,intflags);共有四个参数,其中s为已经连接的本地套接字句柄。buf指向存有发送数据的缓冲区指针,长度有len指定。flags智利队传输控制方式,如是否发送带外数据等。如果调用成功,返回总发送的字节数;否则,返回SOCKET_ERROR。Recv()函数调用用于在参数s指定的已经连接的数据报或流套接字上接收输入数据,原型声明如下:IntPASCALFARrecv(SOCKETs,charFAR*buf,intlen,intflags);参数的意义同send();2.2.6关闭套接字closesocket()关闭套接字s并释放分配给该套接字的资源,cosesocket()函数原型声明如下:BOOLPASCALFARclosesocket(SOCKETs);该函数只有一个参数s,指待关闭的套接字句柄。如果调用成功,返回0,否则返回SOCKET_ERROR。2.3客户端/服务器(C/S)模式在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户机/服务器模式(Client/Server)。即客户向服务器发出服务请求,服务器接受到请求后,提供相应的服务。客户机/服务器模式的建立基于一下两点:首先,建立网络的起因是网络中软硬件资源,运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用;其次,网间进程通信完全是异步的,相互通信的进程见既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为两者的数据交换提供同步,这就是基于客户机/服务器模式的TCP/IP。2.4因特网协议TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。TCP基础:数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。如果创建客户应用程序,就必须知道服务器计算机名或者IP地址(RemoteHost属性),还要知道进行“侦听”的端口(RemotePort属性),然后调用Connect方法。如果创建服务器应用程序,就应设置一个收听端口(LocalPort属性)并调用Listen方法。当客户计算机需要连接时就会发生ConnectionRequest事件。为了完成连接,可调用ConnectionRequest事件内的Accept方法。建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用SendData方法。当接收数据时会发生DataArriva事件。调用DataArrival事件内的GetData方法就可获取数据。3简单远程控制系统总体结构3.1系统规格说明3.1.1简单远程控制系统的概貌“简单远程控制系统的设计与实现”主要包含两个部分:主控端和被控端。主控端是运行在用户计算机上的一个程序,该端主要实现对被控端的控制,以实现对被控计算机关机、注销、重启以及向被控端发送消息等功能。被控端是运行在目标计算机(被控计算机)上的一个程序,以提供该计算机的各种信息,以及提供实现主控端对其执行的各种操作。3.1.2各模块功能要求本系统在功能要求上主要实现的功能有:主控端获取被控端计算机系统信息、对被控端鼠标和键盘的控制、对被控端的系统控制、对被控端的进程进行监控和控制以及对向被控端发送消息。1.主控端获取被控端系统信息。此模块的主要功能是主控端能通过此功能了解到被控计算机上的系统信息,为后面进一步的对被控端进行控制作一个简单的了解,也同时通过此功能对被控计算机上所安装的软、硬件进行了解,做到对被控计算机的了解程度跟了解本机一样。2.对被控端鼠标和键盘的控制。此模块主要实现主控端对被控计算机的鼠标和键盘的控制,包括对键盘和鼠标的开启和关闭。3.对被控端的系统控制。此模块主要实现对被控计算机的机器系统的控制,包括对被控计算机实施关闭计算机、重新启动被控端计算机以及注销被控端计算机目前使用的用户功能。并且可以通过cmd命令打开和关闭windows程序。做到使主控端用户在主控计算机上就能很容易的控制被控计算机的系统。4.被被控端的进程进行监控和控制。此模块主要实现主控计算机对被控计算机的所有进程进行浏览和对一些进程进行杀死操作。有了此功能模块的简历,主控端用户可以在本机更清楚的了解被控计算机的系统运行详细信息。5.向被控端发送信息。此模块主要实现主控计算机向被控计算机发送文字性消息的功能,有了此功能模块的建立,主控端用户可以在本机上向被控端用户传递信息和发送消息,做到了主控端的用户与被控端用户的联系。3.1.3性能要求主控端界面应当简单、友好、方便使用和操作;被控端是用作运行在被控计算机内的可执行文件,为提高执行速度,从客户端发送到服务端的信息应尽量的少。主控端与被控端之间通过使用TCP协议建立连接,以实现对被控计算机的控制。3.1.4运行要求设计出的简单远程控制软件应当在现在使用的大量操作系统上都能运行。例如:Windows2000、WindowsXP、Windows2003;能在较低的硬件配置上运行,如128M的内存,AMD1800+的处理器。3.2数据要求简单远程控制系统的结构中,主控端是相当于一个系统的前台,为用户提供了一个操作界面,而几乎所有的操作都是在被控端这个后台处理程序运行的,被控端界面提供的操作可分为运行和动作两个模块。运行模块是在被控端运行的,动作模块作为远程控制系统的核心,是在主控端运行实现的。3.3用户系统描述首先设置被控计算机为被控端,被控端运行被控端文件,被控端操作完毕。之后主控端通过打开主控端程序进入主控端界面,输入被控端计算机的IP地址点击获取信息,出现被控端信息。被控端连接成功后,在主控端进行控制操作,被控端便可以在主控计算机发出的各种操作命令下完成相应操作。4简单远程控制系统的功能模块的设计4.1简单远程控制系统的主体设计被控端窗口设计为输入主控计算机IP地址,连接主控端计算机的窗口,连接成功后自动进入托盘中,使被控计算机桌面很洁净,也体现出一些隐藏性。流程图如图4.1系统流程图所示:图4.1系统流程图图4.1系统流程图4.2简单远程控制系统的系统功能的实现简单远程控制通信系统的各类控制指令数据传输采用的是因特网通道,控制质量数据传输是基于因特网远程控制系统的关键。我们主要以TCP/IP协议上的通信为基础,使用C/S模型来解决控制数据的通信问题。我们在通信系统上的设计是采用WINSOCK,我们按客户/服务器模型来设计基于因特网的远程控制指令数据通信技术。WINSOCK通信系统采用的控制模式有两种方式,一个是多对一,即多个客户可以同时向服务器请求服务,而服务器也能够同时对这些请求给予相信处理。服务器负责控制控制质量的接受和处理。而客户则是控制指令数据的发送和状态数据的接受和显示,另一个一对多,既一个客户可以同时向多个服务器发送请求服务,而服务器也能够对这些请求给予相信处理。服务器负责控制控制指令的接受和处理,而客户则是控制指令的发送和状态数据的接受和显示。主控端与被控端的连接的系统结构图如图4.2功能结构层次图所示:主主控端输入ip与被控端连接成功获取信息鼠标控制执行CMD键盘控制进程控制图4.2功能结构层次图5简单远程控制系统功能模块的编程及实现以上介绍了远程控制软件编写的一些理论基础,下面介绍一下我们编写的一款远程控制软件所实现的功能,并对其所编程原理进行了剖析。这款软件同大多数远程控制软件一样有两部分组成:包含getinfo.exe和winlgon.exe两个程序,winlgon.exe是服务程序,是安装在与你联网的电脑里(就是被维护或者被控制的电脑),如果要进行控制,就必须在对方的电脑里运行winlgon.exe;getinfo.exe是客户端程序,安装在你自己的电脑里,如果要对对方电脑进行控制]时,就启动客户程序,并可以通过getinfo.exe程序界面的彩旦控制装有winlgon..exe程序的电脑(就是被维护或者被控制的电脑)。5.1简单远程控制的连接功能实现被控端程序是远程控制软件的主体。远程控制软件的具体功能都是在被控制端实现的,主控端只负责传送要执行的命令和显示返回的结果。而几乎所有的操作控制都时在被控端本地实现的。远程控制的被控端要求自动运行,同时还应该要具有一定的隐藏性,不容易被客户端用户发现和关闭,当然,这要在Window任务管理器里看不到。程序代码如下:#defineHKCUHKEY_CURRENT_USER//屏蔽任务管理器(注册表信息)LPCTSTRKEY_DisableTaskMgr= "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";LPCTSTRVAL_DisableTaskMgr="DisableTaskMgr";其中通过修改注册表HKEY_CURRENT_USER中的数值,屏蔽任务管理器等系统热键。服务器端socket自一开始运行就一直保持侦听状态,等待来自客户端的连接。5.2简单远程控制的被控端获取信息的实现此模块的主要功能是主控端能通过此功能了解到被控计算机上的系统信息,为后面进一步的对被控端进行控制作一个简单的了解,也同时通过此功能对被控计算机上所安装的软、硬件进行了解,做到对被控计算机的了解程度跟了解本机一样。这部分的功能主要是通过GetInformation()函数实现的主要代码如下:intCMainFrame::GetInformation()//获取信息{pThreadSendFile=::AfxBeginThread(_ReturnInformationThread,this); //开始传送文件线程 return0;}主控端发送获取信息的命令后,启动*pThreadInformation线程查询被控端本机的基本机器信息,并且开启*pThreadReturnInformation线程向主控端发送本机的基本信息,通过socket套接口sockClient.Send(strMsg,strMsg.GetLength())命令向主控端返回如图5.1被控端基本信息的被控端基本信息。图5.1图5.1被控端基本信息5.3简单远程控制的向被控端发送消息的实现此模块主要实现主控计算机向被控计算机发送文字性消息的功能,有了此功能模块的建立,主控端用户可以在本机上向被控端用户传递信息和发送消息,做到了主控端的用户与被控端用户的联系。这部分的代码是在主控端实现的,通过线程_SendMsgThread,调用SetWindowText函数指定对话窗口,SetWindowText是一个WindowsAPI函数。该函数改变指定窗口的标题栏的文本内容(如果窗口有标题栏)。如果指定窗口是一个控件,则改变控件的文本内容。通过pDlg->GetDlgItem(IDC_SDMSG)->SetWindowText("")命令将信息发送到被控端进行处理。通过网络,主控端向被控端发送信息并被显示在一个特定的窗口,如图5.2主控端显示是在主控端对话框显示的信息图图5.2主控端显示而在被控端会弹出一个对话框,显示主控端发送的消息图图5.3被控端显示信息5.4简单远程控制的被控端键盘和鼠标的开启和锁定的实现此模块主要实现主控端对被控计算机的鼠标和键盘的控制,包括对键盘和鼠标的开启和关闭。钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。我们在此功能模块中主要用到了WH_KEYBOARD_LL和WH_MOUSE_LL两个低级钩子也就是低级鼠标钩子和低级键盘钩子。由于WH_KEYBOARD和WH_MOUSE两个鼠标和键盘的钩子只能监视所在模块的事件,不能监视整个系统的事件,所以用鼠标和键盘的WH_KEYBOARD_LL和WH_MOUSE_LL两个低级钩子可以监视整个系统的鼠标和键盘事件。其中我们还用到了回调函数LRESULTCALLBACKLowLevelKeyboardProc(intnCode,WPARAMwParam,LPARAMlParam){returntrue;}LRESULTCALLBACK

它们其实是宏,表示函数的返回类型,你可以在VC里面对它们点右键然后GoToDefinition看到它的宏定义。

其实,这就表示了WinProg函数是一个回调函数。在MFC中,得到Message消息以后系统会进行回调,当然,我们需要编写一个回调函数来响应。为了区别于其它函数,在回调函数前加上LRESULTCALLBACK在微软vc提供的头文件中有定义

在winnt.h中typedeflongLONG;

在windef.h中typedefLONGLRESULT;

所以LRESULT就是long,也就是长整形

之所以取名类LRESULT,L=>long

result表示结果,说明这个函数的返回值是某个结果此功能通过LowLevelKeyboardProc、onkey和lockkey三个函数实现的,实际上通过LockOrUnLockMouse和LockOrUnLockKey两个变量来修改被控端注册表信息来实现对鼠标和键盘的控制。首先定义服务器端的键盘注册表键值KEY_DisableTaskMgr客户端要向服务器端发送消息“K”,服务器初始设置LockOrUnLockKey为true,收到“K”并判断出后,设置keymouse为true,开始进程_LockKey;在函数里调用PostMessage(pDlg->GetSafeHwnd(),STATUS_MESSAGE,0,0);用GetSafeHwnd打开安全窗口,将消息传递给STATUS_MESSAGE,然后调用Onkey函数进行具体操作:如果KeyMouse和LockOrUnLockKey为TRUE时,用RegOpenKey函数打开注册表键KEY_DisableTaskMgr,然后RegSetValueEx修改VAL_DisableTaskMgr键值为1,LockOrUnLockKey取反。具体代码如下:if(KeyMouse) {if(LockOrUnLockKey) {hhkLowLevelKybd2000=SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,AfxGetApp()->m_hInstance,0); HKEYhk; if(RegOpenKey(HKCU,KEY_DisableTaskMgr,&hk)!=ERROR_SUCCESS) RegCreateKey(HKCU,KEY_DisableTaskMgr,&hk); DWORDval=1; RegSetValueEx(hk,VAL_DisableTaskMgr,NULL, REG_DWORD,(BYTE*)&val,sizeof(val)); LockOrUnLockKey=!LockOrUnLockKey; }如果KeyMouse为True和LockOrUnLockKey为False时,则修改VAL_DisableTaskMgr键值为0。具体代码如下: else {UnhookWindowsHookEx(hhkLowLevelKybd2000); HKEYhk; if(RegOpenKey(HKCU,KEY_DisableTaskMgr,&hk)!=ERROR_SUCCESS) RegCreateKey(HKCU,KEY_DisableTaskMgr,&hk);DWORDval=0; RegSetValueEx(hk,VAL_DisableTaskMgr,NULL, REG_DWORD,(BYTE*)&val,sizeof(val)); LockOrUnLockKey=!LockOrUnLockKey; } }首先定义服务器端的鼠标注册表键值Mouse_DisableTaskMgr客户端要向服务器端发送消息“M”,服务器初始设置LockOrUnLockMouse为true,收到“M”并判断出后,设置keymouse为true,开始进程_LockMouse;在函数里调用PostMessage(pDlg->GetSafeHwnd(),STATUS_MESSAGE,0,0);用GetSafeHwnd打开安全窗口,将消息传递给STATUS_MESSAGE,然后调用Onkey函数进行具体操作:(1)如果KeyMouse和LockOrUnLockKMouse为TRUE时,用RegOpenKey函数打开注册表键Mouse_DisableTaskMgr,然后RegSetValueEx修改VAL_DisableTaskMgr键值为1,LockOrUnLockMouse取反。具体代码如下:else { if(LockOrUnLockMouse) {hhkLowLevelKybd2000=SetWindowsHookEx(WH_MOUSE_LL,LowLevelKeyboardProc,AfxGetApp()->m_hInstance,0); LockOrUnLockMouse=!LockOrUnLockMouse; }(2)如果KeyMouse为True和LockOrUnLockMouse为False时,则修改VAL_DisableTaskMgr键值为0。具体代码如下: else {UnhookWindowsHookEx(hhkLowLevelKybd2000); } }5.5简单远程控制的被控端进程的浏览和杀死功能的实现此模块主要实现主控计算机对被控计算机的所有进程进行浏览和对一些进程进行杀死操作。有了此功能模块的建立,主控端用户可以在本机更清楚的了解被控计算机的系统运行详细信息。得到进程信息:客户端要首先创建套接字sockClient,用于向服务器发送请求信息,连接成功后,发送“P”到对方,表示要得到进程信息,然后等待被控端传送进程信息:服务器如果收到“P”则调用LookPrc函数,在LookPrc函数中开启_LookPrc线程进行获取本机进程的基本文本信息,将其发送给主控端。用CreateToolhelp32Snapshot函数得到进程信息,HANDLESnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)。然后调用Process32First函数获取系统中第一个进程的信息,然后进行循环监听,调用Process32Next函数获得下一个进程信息。加载函数SHGe

温馨提示

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

评论

0/150

提交评论