程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 病毒及流氓軟件自我復制的簡單實現(C#)

病毒及流氓軟件自我復制的簡單實現(C#)

編輯: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"));
  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
  • 尾頁
  • 共3頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved