您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > VB高级编程100例
浅谈用VB6.0编写木马程序现在网络上流行的木马软件基本都是客户机/服务器模式也就是所谓的C/S结构,目前也有一些开始向B/S结构转变,在这里暂且不对B/S结构进行详谈,本文主要介绍C/S结构其原理就是在本机直接启动运行的程序拥有与使用者相同的权限。因此如果能够启动服务器端(即被攻击的计算机)的服务器程序,就可以使用相应的客户端工具客户程序直接控制它了。下面来谈谈如何用VB来实现它。首先使用VB建立两个程序,一个为客户端程序Client,一个为服务器端程序systry。在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择TCP,再加入两个文本框,用以输入服务器的IP地址或服务器名,然后建立一个按钮,按下之后就可以对连接进行初始化了,代码如下:PrivateSubcmdConnect_Click()IfLen(Text1.Text)=0AndLen(Text2.Text)=0ThenMsgBox(请输入主机名或主机IP地址。)ExitSubElseIfLen(Text1.Text)0ThentcpClient.RemoteHost=Text1.TextElsetcpClient.RemoteHost=Text2.TextEndIfEndIftcpClient.ConnectTimer1.Enabled=TrueEndSub连接建立之后就可以使用DataArrival事件处理所收到的数据了。在服务器端systry工程也建立一个窗体,加载WinSock控件,称为tcpServer,协议选择TCP,在Form_Load事件中加入如下代码:PrivateSubForm_Load()tcpServer.LocalPort=1999tcpServer.ListenEndSub准备应答客户端程序的请求连接,使用ConnectionRequest事件来应答户端程序的请求,代码如下:PrivateSubtcpServer_ConnectionRequest(ByValrequestIDAsLong)IftcpServer.StatesckClosedThentcpServer.Close‘检查控件的State属性是否为关闭的。EndIf'如果不是,在接受新的连接之前先关闭此连接。tcpServer.AcceptrequestIDEndSub这样在客户端程序按下了连接按钮后,服务器端程序的ConnectionRequest事件被触发,执行了以上的代码。如果不出意外,连接就被建立起来了。建立连接后服务器端的程序通过DataArrival事件接收客户机端程序所发的指令运行既定的程序。如:把服务器端的驱动器名、目录名、文件名等传到客户机端,客户机端接收后用TreeView控件以树状的形式显示出来,浏览服务器端文件目录;强制关闭或重启服务器端的计算机;屏蔽任务栏窗口;屏蔽开始菜单;按照客户机端传过来的文件名或目录名,而删除它;屏蔽热启动键;运行服务器端的任何程序;还包括获取目标计算机屏幕图象、窗口及进程列表;激活、终止远端进程;打开、关闭、移动远端窗口;控制目标计算机鼠标的移动与动作;交换远端鼠标的左右键;在目标计算机模拟键盘输入,下载、上装文件;提取、创建、修改目标计算机系统注册表关键字;在远端屏幕上显示消息。DataArrival事件程序如下:PrivateSubtcpServer_DataArrival(ByValbytesTotalAsLong)DimstrDataAsStringDimiAsLongDimmKeyAsStringtcpServer.GetDatastrData'接收数据并存入strDataFori=1ToLen(strData)'分离strData中的命令IfMid(strData,i,1)=@ThenmKey=Left(strData,i-1)'把命令ID号存入mKey'把命令参数存入strDatastrData=Right(strData,Len(strData)-i)ExitForEndIfNextiSelectCaseVal(mKey)Case1‘驱动器名、目录名、文件名Case2强制关闭服务器端的计算机Case3强制重启服务器端的计算机Case4屏蔽任务栏窗口;Case5屏蔽开始菜单;Case6按照客户机端传过来的文件名或目录名,而删除它;Case7屏蔽热启动键;Case8运行服务器端的任何程序EndSelectEndSub客户机端用tcpClient.SendData发命令。命令包括命令ID和命令参数,它们用符号“@”隔开。另外,当客户机端断开与服务器端的来接后,服务器端应用tcpServer_Close事件,来继续准备接收客户机端的请求,其代码如下:PrivateSubtcpServer_Close()tcpServer.ClosetcpServer.ListenEndSub这就是一个最基本的特洛伊木马程序,只要你的机器运行了服务器端程序,那别人就可以在千里之外控制你的计算机。至于如何让服务器端程序运行就要发挥你的聪明才智了,在我的源程序中有一中方法,是修改系统注册表的方法。源代码下载成功的特洛伊木马程序要比这个复杂一些,还有程序的隐藏、自动复制、传播等问题要解决。警告:千万不要用来破坏别人的系统。____________________________________________________________________________________________________________________________________________________________________________________________________________________VB实现SQLServer2000存储过程调用存储过程存储过程是存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法,支持用户提供的变量,具有强大的编程功能。它类似于DOS系统中的BAT文件。在BAT文件中,可以包含一组经常执行的命令,这组命令通过BAT文件的执行而被执行。同样的道理,可以把要完成某项任务的许多Transact-SQL语句写在一起,组织成存储过程的形式,通过执行该存储过程就可以完成这项任务。存储过程与BAT文件又有差别,即存储过程已经进行了预编译。1、创建存储过程的方法在Transact-SQL语言中,创建存储过程可以使用CREATEPROCEDURE语句,其语法形式如下:CREATEPROC[EDURE]procedure_name[;number][{@parameterdata_type}[VARYING][=default][OUTPUT]]],…n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}][FORREPLICATION]ASsql_statement[…n]在上面的CREATEPROCEDURE语句中,方括号[]中的内容是可选的,花括号{}中的内容是必须出现的,不能省略,[,…n]表示前面的参数样式,可以重复出现。竖线|表示两边的选项可以任选一个。下面分析该语句中各种选项的含义。CREATEPROCEDURE是关键字,也可以写成CREATEPROC。procedure_name是该存储过程的名称,名称可以是任何符合命名规则的标示符。名称后的[;number]参数表示可以定义一系列的存储过程名称,这些存储过程的数量由number指定。参数名称可以使用@parameterdata_type来指定。在Transact-SQL语言中,用户定义的参数名称前面加@符号,这些数据类型是Transact-SQL语言允许的各种数据类型,包括系统提供的数据类型和用户定义的数据类型。当参数类型为cursor时,必须使用关键字VARYING和OUTPUT。VARYING表示结果集可以是一个输出参数,其内容是动态的。该关键字只能在使用游标作为数据类型时使用。关键字OUTPUT表示这是一个输出参数,可以把存储过程执行的结果信息返回应用程序。default用于指定参数的默认值。RECOMPILE选项表示重新编译该存储过程。该选项只是在需要的时候才使用,例如经常需要改变数据库模式时。ENCRYPTION选项用来加密创建存储过程的文本,防止他人查看。选项FORREPLICATION主要用于复制过程中。注意,该选项不能和选项RECOMPILE同时使用。AS是一个关键字,表示其后的内容是存储过程的语句。参数sql-statement[…n]表示在一个存储过程中可以包含多个Transact-SQL语句。2、存储过程的优点在频繁访问数据库的系统中,开发者都乐于使用存储过程,这与存储过程的下列优点是分不开的。⑴存储过程可以与其他应用程序共享应用程序的逻辑,从而确保一致的数据访问和操纵。⑵存储过程提供了一种安全机制。如果用户被授予执行存储过程权限,那么即使该用户没有访问在执行该存储过程中所参考的表或视图的权限,该用户也可以完全执行该存储过程而不受到影响。因此,可以创建存储过程来完成所有的增加、删除等操作,并且可以通过编程控制上述操作中对信息的访问权限。⑶存储过程执行速度快,便于提高系统的性能。由于存储过程在第一次执行之后,其执行规划就驻存在过程高速缓冲存储区中,在以后的操作中,只需从过程高速缓冲存储区中调用编译好的二进制形式存储过程来执行。⑷使用存储过程可以减少网络传输时间。如果有一千条Transact-SQL语句的命令,一条一条地通过网络在客户机和服务器之间传送,那么这种传输所耗费的时间将很长。但是,如果把这一千条Transact-SQL语句的命令写成一条较为复杂的存储过程命令,这时在客户机和服务器之间网络传输所需的时间就会大大减少。SQLServer2000数据库存储过程的调用VB作为当今应用极为普遍的数据库客户端开发工具之一,对客户端应用程序调用服务器端存储过程提供了强大的支持。特别是随着VB6.0的推出,VB客户端应用程序可以方便地利用ADO的对象和集合来实现对数据库存储过程的调用。在笔者编写的科技档案管理系统中,就是采用VB作为开发平台,采用SQLServer2000数据库管理数据,在这个科技档案管理系统中有海量的数据,并且对数据库有频繁的访问,利用存储过程访问数据库节省了执行时间,大大提高了系统的性能。1、ADO简介ADO控件(也称为ADOData控件)与VB固有的Data控件相似。使用ADOData控件,可以利用MicrosoftActiveXDataObjects(ADO)快速建立数据库绑定控件和数据提供者之间的连接。ADOData控件可以实现以下功能:·连接一个本地数据库或远程数据库。·打开一个指定的数据库表,或定义一个基于结构化查询语言(SQL)的查询、存储过程或该数据库中的表的视图的记录集合。·将数据字段的数值传递给数据绑定控件,可以在这些控件中显示或更改这些数值。·添加新的记录,或根据更改显示在绑定的控件中的数据来更新一个数据库。2、数据库的连接数据库的连接可通过ADO控件实现,为此,必须在工程部件中选择MicrosoftADODataControl6.0(OLEDB),然后在窗体中添加ADO控件。利用ADO连接数据库有两种方法,具体如下。1)通过ADODC属性页实现连接在ADODC属性页中选择生成按钮,进入数据链接属性对话框;然后选择该对话框中的连接属性页,选择或输入服务器名称和数据库等重要信息;最后测试连接,连接成功后,按确定按钮,返回到属性页对话框,可获得连接字符串,如下例:Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=Science_File;DataSource=Data_Server其中sa是用户名;Science_File是数据库名;Data_
本文标题:VB高级编程100例
链接地址:https://www.777doc.com/doc-5936636 .html