Автор: Пользователь скрыл имя, 27 Февраля 2013 в 09:59, курсовая работа
Компьютерные вирусы со времени своего появления
распространились чрезвычайно широко . Сейчас уже
трудно найти человека,который бы ни разу не слышал
об этих " существах " .И вместе с тем подавляющее
большинство пользователей почти ничего не знают о
том, что это такое, и склонны приписывать виру-
ЧАСТЬ 1 . COM - ВИРУСЫ ....................... 6
ГЛАВА 1 . РАЗРАБОТКА НЕРЕЗИДЕНТНОЙ
ВИРУСНОЙ ПРОГРАММЫ .............. 6
1.1 Загрузка и выполнение
COM - программы ..................... 6
1.2 Как вирус может заразить
COM - файл .......................... 7
1.3 Работа вируса в
зараженной программе ................ 8
1.4 Как начинается
распространение вируса .............. 9
1.5 Начало работы ....................... 10
1.6 Вирус получает управление ........... 10
1.7 Восстанавливаем зараженную
программу ........................... 12
1.8 Запоминаем содержимое DTA ........... 12
1.9 Ищем подходящий файл ................ 13
1.10 Читаем исходные три байта ........... 15
1.11 Выполняем необходимые расчеты ....... 16
1.12 Проверяем файл на зараженность ...... 18
1.13 Заражаем COM - программу ............ 19
1.14 Восстанавливаем DTA ................. 20
1.15 Передаем управление
зараженной программе ................ 20
1.16 Область данных вирусной программы ... 21
1.17 Завершаем запускающую программу ..... 21
1.18 Текст нерезидентного COM - вируса ... 23
1.19 Комментарии ......................... 29
1.20 Испытание вируса .................... 29
ГЛАВА 2 . РАЗРАБОТКА РЕЗИДЕНТНОЙ
ВИРУСНОЙ ПРОГРАММЫ .............. 30
2.1 Понятие резидентного
( TSR ) вируса ...................... 30
2.2 Несколько слов о
резидентных программах .............. 30
2.3 Алгоритм работы
резидентного COM - вируса ........... 31
2.4 Заголовок вируса .................... 34
2.5 Вирус начинает работу ............... 34
2.6 Сохраняем регистры процессора ....... 38
2.7 Создаем секцию
инициализации ....................... 39
2.8 Запрашиваем блок памяти ............. 41
2.9 Делаем вирус " незаметным " ......... 44
2.10 Получаем вектора прерываний ......... 46
2.11 Копируем вирусный код в память ...... 48
2.12 Устанавливаем вектора прерываний
на вирусные обработчики ............. 48
2.13 Пишем резидентную часть ............. 50
2.14 Заражаем COM - файл ................. 51
2.15 Восстанавливаем регистры ............ 56
2.16 Пишем обработчики прерываний ........ 57
2.17 Обработчик Int 13h .................. 58
2.18 Обработчик Int 21h .................. 60
2.19 Обработчик Int 24h .................. 62
2.20 Обработчик Int 2Fh .................. 62
2.21 Обработчик Int 28h .................. 64
2.22 Область данных вируса ............... 64
2.23 Процедура идентификации COMMAND.COM.. 65
2.24 Завершаем программу ................. 66
2.25 Текст резидентного COM - вируса ..... 67
2.26 Комментарии ......................... 81
2.27 Испытание вируса .................... 82
ЧАСТЬ 2 . EXE - ВИРУСЫ ....................... 82
ГЛАВА 1 . РАЗРАБОТКА НЕРЕЗИДЕНТНОГО
EXE - ВИРУСА .................... 82
1.1 Формат EXE - файла на диске ......... 82
1.2 Загрузка и выполнение
EXE - программы ..................... 84
1.3 Как вирус может заразить
EXE - файл .......................... 86
1.4 Работа вируса в
зараженной программе ................ 86
1.5 Начало работы ....................... 88
1.6 Вирус получает управление ........... 88
1.7 Ищем подходящий файл ................ 89
1.8 Читаем заголовок файла .............. 92
1.9 Производим необходимые
вычисления .......................... 93
1.10 Заражаем EXE - программу ............ 98
1.11 Восстанавливаем DTA ................. 99
1.12 Восстанавливаем точку входа ......... 100
1.13 Область данных вируса ............... 101
1.14 Используемые процедуры .............. 103
1.15 Работа завершена .................... 104
1.16 Полный текст
нерезидентного EXE - вируса ......... 104
1.17 Несколько слов об
испытании вируса .................... 112
ГЛАВА 2 . РАЗРАБОТКА РЕЗИДЕНТНОГО
EXE - ВИРУСА .................... 113
2.1 Алгоритм работы резидентного
EXE - вируса ........................ 113
2.2 Защита от
программ - антивирусов .............. 115
2.3 Как реализовать защиту от
эвристического анализа .............. 116
2.4 Реализуем предложенный алгоритм ..... 119
2.5 Пишем промежуточный обработчик ...... 121
2.6 Защита от обнаружения вируса в файле. 122
2.7 Несколько слов о вредных
действиях вирусной программы......... 122
2.8 Полный текст резидентного
Возврат : CF = 0
AH = 0
AL = количество записанных секторов
При ошибке :
CF = 1
AH = байт состояния .
*
Биты регистра CX 5...0 определяют номер сектора,
а биты 15...6 - номер дорожки !!!
( см функцию 02h ).
Прерывание INT 13h, функция 08h - получение пара-
метров дисковода.
Вызов : AH = 08h
DL = дисковод ( 00h - 07Fh - для дискет-
ного дисковода, 80h - 0FFh - для
" винчестера " .
Возврат : AH = 0
BL = тип дисковода ( только AT и PS2 )
DL = количество накопителей,
мых первым контроллером
DH = максимальный номер головки
CL = максимальный номер сектора
CH = максимальный номер дорожки
( см. функцию 02h )
ES : DI = адрес таблицы параметров дис-
ковода
При ошибке :
CF = 1
AH = байт состояния .
*
Функция не работает на IBM XT для дисководов !!!
ПРИЛОЖЕНИЕ 2
Формат загрузочной записи для MS DOS
различных версий
Формат BOOT - записи для версий MS DOS до 4.0
______________________________
|Смещение |Размер | Содержимое |
| ( HEX ) |( DEC )|
|---------|-------|-----------
|00h |03 |Команда EB xx 90 перехода на |
| | |программу начальной загрузки |
|---------|-------|-----------
|03h |08 |Название фирмы - производителя|
| | |и номер операционной системы |
|---------|-------|-----------
|0Bh |13 |Блок параметров BIOS ( BPB ) |
|---------|-------|-----------
|18h |02
|Количество секторов на
|---------|-------|-----------
|1Ah |02
|Количество поверхностей
|---------|-------|-----------
|1Ch |02 |Количество скрытых секторов, |
| | |которые иногда используются |
| | |для разбиения диска на разделы|
|---------|-------|-----------
|1Eh |480 |Программа начальной загрузки, |
| | |называемая загрузочной записью|
| | |(Boot Record). |
|---------|-------|-----------
|1FEh |02 |Код : 55 AA |
|_________|_______|___________
Формат BOOT - записи для версии MS DOS 4.0
______________________________
|Смещение |Размер | Содержимое |
| ( HEX ) |( DEC )|
|---------|-------|-----------
|00h |03 |Команда EB xx 90 перехода на |
| | |программу начальной загрузки |
|---------|-------|-----------
|03h |08 |Название фирмы - производителя|
| | |и номер операционной системы |
|---------|-------|-----------
|0Bh |25 |Расширенный блок параметров |
| | |BIOS ( EBPB ) |
|---------|-------|-----------
|24h |01 |Физический номер дисковода |
| | |( 00h - для дискетного диско- |
| | |вода, 80h - для винчестера ) |
|---------|-------|-----------
|25h |01 |Зарезервировано |
|---------|-------|-----------
|26h |01 |Символ " ) " - признак расши- |
| | |ренной загрузочной записи |
| | |MS DOS 4.0 |
|_________|_______|___________
|27h |04
|Серийный номер диска,
| | |во время его форматирования |
|---------|-------|-----------
|2Bh |11 |Метка ( Volume Label ) диска, |
| | |задается во время его форма- |
| | |тирования |
|---------|-------|-----------
|36h |08 |Обычно содержит запись типа |
| | |" FAT 12 " или аналогичную |
|_________|_______|___________
|3Eh |448 |Программа начальной загрузки, |
| | |называемая загрузочной записью|
| | |(Boot Record). |
|---------|-------|-----------
|1FEh |02 |Код : 55 AA |
|_________|_______|___________
Формат Master Boot Record ( MBR ) - главной
загрузочной записи жесткого диска
______________________________
|Смещение |Размер | Содержимое |
| ( HEX ) |( DEC )|
|---------|-------|-----------
|00h |446 |Программа, называемая |
| | |главной загрузочной записью |
| | |(MBR, или Master Boot Record).|
|---------|-------|-----------
|1BEh |16
|Элемент таблицы разделов
|---------|-------|-----------
|1CEh |16
|Элемент таблицы разделов
|---------|-------|-----------
|1DEh |16
|Элемент таблицы разделов
|---------|-------|-----------
|1EEh |16
|Элемент таблицы разделов
|---------|-------|-----------
|1FEh |02 |Код : 55 AA |
|_________|_______|___________
Формат BPB для версий MS DOS до 4.0
______________________________
|Смещение |Размер | Содержимое |
| ( HEX ) |( DEC )|
|---------|-------|-----------
|00h |02 |Количество байтов |
| | |в одном секторе диска |
|---------|-------|-----------
|02h |01 |Количество секторов |
| | |в одном кластере |
|---------|-------|-----------
|03h |02 |Количество зарезервированных |
| | |секторов |
|---------|-------|-----------
|05h |01 |Количество копий FAT |
|---------|-------|-----------
|06h |02 |Максимальное количество дес- |
| | |крипторов файлов, содержащихся|
| | |в корневом каталоге диска |
|---------|-------|-----------
|08h |02 |Общее количество секторов на |
| | |носителе данных в разделе DOS |
|_________|_______|___________
|0Ah |01 |Байт - описатель среды носи- |
| | |теля данных |
|---------|-------|-----------
|0Bh |02
|Количество секторов,
| | |одной копией FAT |
|_________|_______|___________
Формат EBPB
______________________________
|Смещение |Размер | Содержимое |
| ( HEX ) |( DEC )|
|---------|-------|-----------
|00h |02 |Количество байтов |
| | |в одном секторе диска |
|---------|-------|-----------
|02h |01 |Количество секторов |
| | |в одном кластере |
|---------|-------|-----------
|03h |02 |Количество зарезервированных |
| | |секторов |
|---------|-------|-----------
|05h |01 |Количество копий FAT |
|---------|-------|-----------
|06h |02 |Максимальное количество дес- |
| | |крипторов файлов, содержащихся|
| | |в корневом каталоге диска |
|---------|-------|-----------
|08h |02 |Общее количество секторов на |
| | |носителе данных в разделе DOS |
|_________|_______|___________
|0Ah |01 |Байт - описатель среды носи- |
| | |теля данных |
|---------|-------|-----------
|0Bh |02
|Количество секторов,
| | |одной копией FAT |
|_________|_______|___________
|0Dh |02 |Количество секторов |
| | |на дорожке |
|---------|-------|-----------
|0Fh |02 |Количество головок накопителя |
|---------|-------|-----------
|11h |02 |Количество скрытых секторов |
| | |для раздела,который по размеру|
| | |меньше 32 - х Мегабайт |
|---------|-------|-----------
|13h |02 |Количество скрытых секторов |
| | |для раздела,который по размеру|
| | |превышает 32 Мегабайта |
| | |( Используется только в |
| | |MS DOS 4.0 ) |
|---------|-------|-----------
|15h |04 |Общее количество секторов на |
| | |логическом диске для раздела, |
| | |который по размеру превышает |
| | |32 Мегабайта |
|_________|_______|___________
Параметры дискет различных типов
( В таблицу не вошли данные о совсем старых диске-
тах с объемом 320 Kb, 180 Kb, 120 Kb и других ) :
______________________________
|Диаметр | | | | | |
|диска | 3.5" | 3.5" | 3.5" | 5.25" | 5.25 " |
|----------|------|------|----
|Емкость | | | | | |
|диска, Kb | 2880 | 1440 | 720 | 1200 | 360 |
|----------|------|------|----
|Media | | | | | |
|Descryptor| F0h | F0h | F9h | F9h | FDh |
|----------|------|------|----
|Количество| | | | | |
|сторон | 2 | 2 | 2 | 2 | 2 |
|----------|------|------|----
|Количество| | | | | |
|дорожек | 80 | 80 | 80 | 80 | 40 |
|на стороне| | | | | |
|----------|------|------|----
|Количество| | | | | |
|секторов | 36 | 18 | 9 | 15 | 9 |
|на дорожке| | | | | |
|----------|------|------|----
|Размер | | | | | |
|сектора | 512 | 512 | 512 | 512 | 512 |
|----------|------|------|----
|Количество| | | | | |
|секторов | 2 | 1 | 2 | 1 | 2 |
|в кластере| | | | | |
|----------|------|------|----
|Длина FAT | | | | | |
|в секторах| 9 | 9 | 3 | 7 | 2 |
|----------|------|------|----
|Количество| | | | | |
|копий FAT | 2 | 2 | 2 | 2 | 2 |
|----------|------|------|----
|Длина | | | | | |
|корневого | | | | | |
|каталога | 15 | 14 | 7 | 14 | 7 |
|в секторах| | | | | |
|__________|______|______|____
ПРИЛОЖЕНИЕ 3
КОДЫ ОШИБОК ПРИ ВЫПОЛНЕНИИ ФУНКЦИЙ
MS DOS и BIOS
00h - Ошибки нет
01h - Неправильный номер функции
02h - Файл не найден
03h - Путь не найден
04h - Слишком много открытых файлов
05h - Доступ запрещен
06h - Неправильный дескриптор
07h - Уничтожен блок управления памятью ( MCB -
блок)
08h - Не хватает памяти
09h - Неправильный адрес блока памяти
0Ah - Неправильное окружение
0Bh - Неправильный формат
0Ch - Неправильный код доступа
0Dh - Неправильные данные
0Eh - Неизвестное устройство
0Fh - Неправильный дисковод
10h - Попытка удалить текущий каталог
11h - Не то же устройство
12h - Больше нет файлов
13h - Диск защищен от записи
14h - Неизвестное устройство
15h - Дисковод не готов
16h - Неизвестная команда
17h - Ошибка контрольной суммы
19h - Ошибка поиска дорожки
1Ah - Неизвестный носитель
1Bh - Сектор не найден
1Ch - В принтере нет бумаги
1Dh - Отказ записи
1Eh - Отказ чтения
1Fh - Общая ошибка
50h - Файл уже существует
52h - Не могу создать каталог
54h - Слишком много перенаправлений
55h - Двойное перенаправление
57h - Неправильный параметр
------------------------------