|
很多删除此帖、病毒都会有运行后释放病毒文件,然后退出程序删除自身的功能,这些功能是怎么实现的呢?
我看到有一些文章对于C语言的实现方法是创建一个线程,然后利用这个线程进行删除;对于VB的很多是生成一个批处理文件,退出时调用该文件删除程序本身,然后再删除批处理自身。
对于VB来说,创建线程是比较麻烦的,所以这里也用批处理的方式来删除自身。
不过生成批处理文件也有个不好的地方就是,如果该分区是NTFS格式的话,批处理自身有时会删除不掉。那我们用什么方法来避免这个问题呢?那就是不生成中间批处理文件,直接就运行删除的命令。
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Shell "cmd /c del " & App.EXEName & ".exe"
End Sub
不过这样一来也有个问题就是有时候电脑处理的工作太多的话(比如开了Photoshop等大型的程序),资源释放得比较慢,删除就会失败。那我们得给该命令来个延时才行,可是我不知道有什么延时的命令,那该怎么办呢?没关系,我们用&&连接符把一个PING命令和删除的命令一起执行就行了。
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Shell "cmd /c ping 127.0.0.1&&del " & App.EXEName & ".exe"
End Sub
建立批处理自删
Private Sub Command1_Click()
'建立批处理
Open App.Path & "\a.bat" For Output As #1
'"@echo off" 不显示执行过程
Print #1, "@echo off"
Print #1, "sleep 100"
'a.bat 删除指定文件
Print #1, "del " & App.EXEName + ".exe"
'a.bat 删除自身
Print #1, "del a.bat"
Print #1, "cls"
Print #1, "exit"
Close #1
Shell App.Path & "\a.bat", vbHide
End
End Sub |
|