EXE-вирусы для MS DOS Неверов А.В.. Форматы EXE-файлов Формат файлаОперационная система MZMS DOS NE (New Exe)Windows 3.x PE (Portable Executible) Windows.

Презентация:



Advertisements
Похожие презентации
Управление памятью Управление физической памятью.
Advertisements

Вирусы для файлов в формате PE А.В. Неверов. Формат PE.
Архитектура ЭВМ Практика 2. Основы ассемблера..
Директивы сегментации. Упрощенные директивы сегментации. Лекция доцента кафедры ИВТ ГрГУ кандидата технических наук Ливак Е.Н.
Архитектура ЭВМ Практика 3. Линейные программы на языке ассемблера.
1 ЛЕКЦИЯ 9 РАБОТА С ФАЙЛАМИ В MS DOS Для использования файла в программе обычно необходимо выполнить следующие операции: создание нового файла; открытие.
Самостоятельная работа тема – MICROSOFT EXCEL. План Что такое Microsoft Excel? Что такое Microsoft Excel? Запуск и завершение программы Запуск и завершение.
Язык ASSEMBLER Команды пересылки данных Лекция доцента кафедры ИВТ ГрГУ кандидата технических наук Ливак Е.Н.
IATK 1 Всё о компьютерных вирусах Анастасия Метелюк 190(3)
Программирование на языке низкого уровня Ассемблер.
Лабораторная работа 7. Работа с динамической памятью, строками и файлами.
КОМПЬЮТЕРНЫЕ ВИРУСЫ И ЗАЩИТА ОТ НИХ Информатика и ИКТ 10 класс.
КОМПЬЮТЕРНЫЕ ВИРУСЫ И ЗАЩИТА ОТ НИХ Информатика и ИКТ 10 класс.
Элементы ЯПВУ. УКАЗАТЕЛИ. C / С++Pascal Вся динамическая память в Pascal это сплошной массив байтов (куча). Адрес начала кучи храниться в переменной HeapOrg,
Теория компиляторов-2. Л.41 Теория компиляторов Часть II Лекция 4. Объектный файл и виртуальная машина.
В данной презентации к вашему вниманию предлагается обзор комплекса C&CTools, состоящего из двух программ C&CView и C&CEditor.
это определенное количество информации (программа или данные), имеющее имя и хранящееся в долговременной (внешней) памяти. Файл.
Определение констант для размещения их компилятором в составе инструкций языка Определение числовых констант: имя = значение PI= V_size = 5 M_size.
Лекция 5 Управление памятью Виртуальное адресное пространство.
Регистры общего назначения – сумматор, регистр данных, адресный регистр и т.д. Арифметико- логическое устройство Устройство управления
Транксрипт:

EXE-вирусы для MS DOS Неверов А.В.

Форматы EXE-файлов Формат файлаОперационная система MZMS DOS NE (New Exe)Windows 3.x PE (Portable Executible) Windows 9x Windows NT

Формат EXE-программы для MS DOS

Бинарный код файла MZ-заголовок Код Данные

Формат MZ-заголовка Relocation Table ABCDEF 00MZPartPagPageCntReloCntHdrSizeMinMemMaxMemReloSS 10ExeSPChkSumExeIPReloCSTabOffOverlay … 1F

Значение полей MZ-заголовка СмещениеНаименованиеЗначение +00hСигнатураПоле сигнатуры стандартного заголовка содержит значение MZ (4Dh 5Ah). Оно определяет формат заголовка, а следовательно и всего exe-файла +02hPartPagРазмер последней (неполной) страницы +04hPageCntКоличество страниц в файле (участков размером по 512 байт) +06hReloCntКоличество элементов в таблице настройки адресов (Relocation Table) +08hHdrSizeДлина заголовка в параграфах +0AhMinMemМинимальный объем памяти (в параграфах), которую нужно выделить после загруженного модуля +0ChMaxMemМаксимальный объем памяти (в параграфах), которую можно выделить после загруженного модуля +0EhReloSSСегментное смещение начала сегмента стека (для настройки регистра SS) +10hExeSPЗначение SP, указанное при входе

Значение полей MZ-заголовка +12hChkSumКонтрольная сумма +14hExeIPЗначение IP, указанное при входе (точка входа в программу) +16hReloCSСегментное смещение начала сегмента кода (для настройки регистра CS) +18hTabOffСмещение в файле первого элемента таблицы настройки адресов (обычно 1Сh) +1AhOverlayНомер для загруженного оверлейного модуля. Для коренного модуля это поле рано 0 +1СhНачало таблицы настройки адресов (Relocation Table) Каждый элемент таблицы занимает 4 байта и имеет формат segment:offset – длинные адреса элементов программы, которые содержат настраиваемые сегментные адреса. Сегмент (segment) принято называть входным сегментом – I_SEG, а смещение (offset) – входным смещением – I_OFF

Загрузка MZ-файла 1) Определяется участок памяти с размером, достаточным для загрузки программы. 2) Формируется и заполняется MCB для переменных среды. 3) Создается и заполняется блок памяти для PSP (сегмент:0000h – PSP, сегмент+0010h:0000h – программа). В PSP заносятся необходимые значения. 4) Устанавливается адрес DTA равный PSP:0080h. 5) В рабочую область загрузчика считывается форматированная часть MZ-заголовка (без Relocation Table). 6) Вычисляется длина загрузочного модуля по формуле Size = ((PageCnt * 512) – (HdrSize * 16)) – PartPag.

Загрузка MZ-файла 7) Вычисляется сегментный адрес для загрузки START_SEG = PSP + 10h. 8) Определяется смещение загрузочного модуля в файле, равное HdrSize * 16. 9) Считывается в память загрузочный модуль, начиная с адреса START_SEG:0000h. 10) Для каждого элемента в таблицу настройки адресов выполняются следующие операции: a) считываются значения входных смещения и сегмента I_OFF и I_SEG; б) вычисляется новое значение сегмента RELO_SEG = START_SEG + I_SEG; в) читается слово по адресу RELO_SEG:I_OFF; г) к прочитанному слову прибавляется значение START_SEG; д) полученное значение запоминается по тому же адресу - RELO_SEG:I_OFF. 11) Распределяется память для программы в соответствии с MinMem и MaxMem.

Загрузка MZ-файла 12) Инициализируются регистры: а) DS = ES = PSP (таким образом, после загрузки exe-программы регистры DS и ES указывают не на сегменты данных, а на PSP. Следовательно, чтобы программа работала корректно, программист должен самостоятельно выполнить инициализацию этих регистров); б) AX = результат правильности инициализации драйверов, указанных в командной строке; в) SS = ReloSS + START_SEG; SP = ExeSP; г) CS = ReloCS + START_SEG; IP = ExeIP.

Типы вирусов для EXE-программ в MS DOS Вандалы (Overwrite) Спутники (Companion) Создание COM-спутника Переименование EXE-файла Внедряемые (Parasitic) Стандартное заражение Внедрение методом сдвига Внедрение переносом

Вандалы (Overwrite) Считать тело вируса в буфер Найти подходящую жертву Открыть найденный exe-файл Проверить зараженность файла Записать текст вируса в начало файла (поверх имеющейся информации)

Спутники (Companion) Создание COM-спутника Если в командной строке есть параметры для запускаемого файла – сохранить их Найти exe-файл Проверить наличие «спутника» Скопировать тело вируса под именем.COM Передать управление зараженному файлу. При необходимости передать ему параметры командной строки

Спутники (Companion) Переименование EXE-файла Сохранить параметры командной строки Найти exe-файл Проверить, имеется ли для него спутник с именем, выбранным для инфицирования Скопировать жертву по выбранным именем Записать текст вируса в файл со старым именем жертвы Вернуть управление инфицированному файлу. При необходимости передать ему параметры командной строки

Внедряемые (Parasitic) Стандартное заражение EXE-файла Текст вируса записывается в конец файла Чтобы вирус получил управление возможно два приема: Модификация MZ-заголовка Модификация одной из инструкций сегмента кода, как правило, первой

Внедряемые (Parasitic) Внедрение методом сдвига Найти жертву Проверить зараженность Считать тело жертвы (полностью) в буфер Записать тело вируса Записать тело жертвы

Внедряемые (Parasitic) Активация после внедрения методом сдвига Создать временный файл Переписать в него текст жертвы После выполнения вируса передать управление файлу жертвы Если есть необходимость, то перед запуском сохранить параметры командной строки, а при передаче управления вернуть их жертве

Внедряемые (Parasitic) Внедрение методом переноса Из начала файла считывается фрагмент файла, равный по длине телу вируса Данный фрагмент записывается в конец заражаемого файла На его место записывается тело вируса

Внедряемые (Parasitic) Активация после внедрения методом переноса После срабатывания вируса необходимо восстановить исходный код зараженного файла во временный файл После завершения работы вируса запустить текст программы из временного файла Или можно не использовать временный файл, восстановив рабочую версию жертвы в том же файле, а затем заразив ее вновь