導航:首頁 > 編程知識 > 怎麼編程實現傳染病模擬

怎麼編程實現傳染病模擬

發布時間:2023-03-12 16:11:00

Ⅰ 怎樣編寫病毒

1.1病毒程序VIRUS.C
這是一個用C語言寫的病毒程序,當激發病毒程序時顯示時間,然後返回。病毒程序VIRUS.C可將病毒傳染給一個C語言程序。當被病毒感染的程序經編譯、連接和執行後,又可以將病毒部分傳染給其他的C語言源程序。每執行一次帶有病毒的C語言程序,就向C語言源程序傳播一次病毒。此程序的設計思路如下:
當含有病毒部分的程序被執行時,首先進入病毒程序。它在磁碟上找擴展名為C的匹配文件,如果找到,查找是否有被傳染過的標志「INFECTED」。如果有此標志,繼續找其它的C文件,直至全部檢查一遍。若沒有這個標志,則
(1)在未被感染的C程序頭部加入「INFECTED」已被傳染標志。
(2)讀取病毒文件的頭文件,將其插入到即將被感染的文件頭部。如果發現有重復則不插入。
(3)在主程序中插入「VIRUSES();」調用VIRUSES函數。尋找printf、for、while、break語句,如果找到就在之前插入。
(4)在文件尾部插入VIRUSES_SUB子程序。
(5)在插入到將感染文件裡面的VIRUSES_SUB子程序裡面,必須把文件名改為當前自身的文件名,否則被傳染後的文件經過編譯、連接和運行後不能再繼續傳染。
(6)最後插入VIRUSES子程序。這個子程序裡面調用了VIRUSES_SUB,執行到這里返回執行結果信息。
其中用到4個出錯的返回值,分別是:
1:用戶文件太大,不傳染;
2:帶病毒文件打不開,不傳染;
3:帶病毒文件讀取不成功,不傳染;
4:查找第一個匹配文件不成功。
如果返回值是0代表文件傳染成功。
具體實現過程如下:
其中用到的函數和結構體用法參考3.3節。
首先導入病毒子程序要用到的三個庫文件,分別是dir.h,stido.h,dos.h.在主函數裡面只調用VIRUSES函數。緊跟定義VIRUSES函數裡面要調用的VIURS_SUB函數。裡面定義了若干個變數。ffblk用來保存查找到的匹配文件的信息,用到裡面的ff_name變數來保存匹配文件名。
然後定義保存未感染的文件和病毒文件的文件型指針變數,分別用是*virus_r和*virus_v.讀取文件的緩沖區,放到二維數組a[500][80]裡面臨時存放。因為此程序對大於500行的C文件不進行傳染,所以完全可以放到裡面。首先用getdate函數獲取系統當前日期並輸出。接著用findfirst函數查找擴展名為C的文件,將其信息保存到ffblk裡面。用fgets函數讀文件的第一行,長度是80-1個字元。然後用strstr函數檢測病毒的標志,看文件是否有INFECT這個標志。
如果有,表示文件已經被傳染,關閉文件,不進行傳染。當含有病毒部分的程序被執行時,首先進入病毒程序。它在磁碟上查找*.C的匹配文件,一旦找到,查找「已被傳染過」的標志INFECTED。若有此標志,繼續找其它*.C文件,直至全部檢查一遍。
如果沒有這個標志,將文件全部讀入a[500][80],如果發現文件超過500行,不傳染,返回。將文件指針指向文件頭,打開帶病毒的文件。如果打不開,返回。
然後讀取帶病毒文件的前4行,也就是病毒子程序要用到的頭文件,寫入將被傳染的文件。若不能讀取帶病毒文件,返回。用n_line變數控制行數,把將被傳染文件的源程序寫回原文件。其中要進行處理不寫入病毒文件已有的包含語句,也就是說使#Include語句不重復。
這點是這樣實現的:定義一個字元數組charinclude_h[]=;strstr函數查看將被傳染文件的頭文件是否和*include_h[]相同,如果相同,......

閱讀全文

與怎麼編程實現傳染病模擬相關的資料

熱點內容
新中大軟體怎麼設置文件夾 瀏覽:807
git刪除文件夾 瀏覽:353
皇室戰爭怎麼升級競技場 瀏覽:447
雅虎統計工具 瀏覽:741
edgepdf文件分類 瀏覽:901
cad為什麼捕捉不到外部參照文件 瀏覽:935
重慶一共有多少個網站 瀏覽:34
k8s配置文件env創建失敗 瀏覽:197
編程序在電腦上叫做什麼 瀏覽:92
qq閱讀可賺 瀏覽:21
怎樣查找web儲存文件圖片 瀏覽:681
人口檔案資料庫包括什麼信息 瀏覽:709
手機有什麼好玩的星戰網路游戲 瀏覽:15
ps怎麼弄成轉曲文件 瀏覽:281
用數據線給手機傳文件 瀏覽:926
西門子jmp指令在編程軟體哪裡 瀏覽:335
win10加密共享文件夾不見了 瀏覽:412
平板電腦無法打開文件 瀏覽:718
win10如何強制重命名文件 瀏覽:204
java集合隨機打亂順序 瀏覽:805

友情鏈接