开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2151|回复: 4
收起左侧

vb中删除自身

[复制链接]
发表于 2011-2-27 14:51:58 | 显示全部楼层 |阅读模式   福建省福州市
很多删除此帖、病毒都会有运行后释放病毒文件,然后退出程序删除自身的功能,这些功能是怎么实现的呢?
我看到有一些文章对于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
结帖率:100% (2/2)
发表于 2011-3-10 08:03:25 | 显示全部楼层   宁夏回族自治区固原市
{:3_238:}谢谢分享精神
回复 支持 反对

使用道具 举报

发表于 2011-3-11 01:49:11 | 显示全部楼层   广东省东莞市
还有没有其它方法?
回复 支持 反对

使用道具 举报

发表于 2011-3-19 17:56:42 | 显示全部楼层   山东省威海市
精币又卡掉了晕
回复 支持 反对

使用道具 举报

结帖率:60% (6/10)

签到天数: 3 天

发表于 2012-12-29 16:51:21 | 显示全部楼层   浙江省台州市
看不懂呀 能翻译成e的么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表