病毒程式

首次涉足病毒程式的領域是在我大學三年級的時候。在此之前,我一直對於如何撰寫病毒的程式碼充滿好奇。因此,在整個大學生涯中,我秉持一個原則:若要學習一項技術,就必須親自實作。因此,我嘗試著撰寫一個能在Linux平台上運行的病毒程式碼。

一、病毒的感染方式

Prepending (前綴)
Prepending是將病毒程式碼附加在目標程式碼之前的一種技術。這種方法需要利用無用的程式碼區段,以便寫入病毒碼。由於可使用的空間有限,病毒碼通常無法太大。

Appending (後綴)
Appending是將病毒程式碼附加在目標程式碼的尾端。這種方法相對靈活,因為不會限制病毒碼的大小,是病毒程式設計中最常見的手法之一。

Cavity (空隙)
Cavity是將病毒碼附加在程式主體中的一種技術。由於程式碼中不同函式之間可能存在無意義的程式碼,病毒可以利用這些區域插入部分病毒碼,使病毒碼分散在程式碼的各個地方。由於附著的病毒程式碼不會增加執行檔的長度,使得檢測感染變得非常困難。

二、實作Appending病毒程式

Entry point (進入點)
程式的Entry point是0x08049a30,需要將其替換或Hook它,以實現先運行病毒程式碼的目的。

Hooking (掛鉤)
透過修改原始程式碼,我們可以將其改成執行我們的病毒碼。這可以通過改寫指令,使其先執行病毒碼,然後再繼續主程式的執行。

標記已被感染的旗標
為了避免重複感染相同的程式,我們需要在已被感染的程式碼上做一些標記(例如0xaa)。

修改Program header (程式標頭)
考慮到病毒碼位於程式的尾端,我們需要確保修改Program header,以確保它能正確運行。這包括確認LOAD的位址和修改運行權限,以允許讀、寫、執行的操作。

寫入病毒碼
最後,我們將病毒碼寫入程式的尾端。在這個例子中,病毒碼只會印出"You has been Infection."的字串。若要執行其他行為,則需要修改病毒碼。

三、運行結果

這個病毒的實作範例會感染名為ls2的程式。當執行時,它會先執行病毒的行為,然後再顯示資料夾下的檔案名稱。請注意,這僅是為了示範和學術目的,實際上散布病毒是非法的行為,應該遵守法律和倫理準則。

創作者介紹
創作者 Hacks Pulse的部落格 的頭像
Hacks Pulse

Hacks Pulse的部落格

Hacks Pulse 發表在 痞客邦 留言(0) 人氣( 0 )