Курсовая работа: Защита программ от компьютерных вирусов

9) Выделяется память за концом программы в соответствии со значениями

MinMem и МахМет.

10) Инициируются регистры и запускается программа:

• регистры ES и DS получают значение сегмента, в котором располагается PSP',

• регистр АХ отражает корректность идентификаторов дисков в командной строке (при нормальном запуске содержит 0);

• SS = StartSeg+ReloSS;

• SP = ExeSP;

• CS == StartSeg^ReloCS;

•IP= Exelp;

• содержимое остальных регистров не имеет значения. Регистры сегмента кода CS и указателя инструкций IP обычно инициируются следующими тремя командами:

PUSH StartSeg+ReloCs

PUSH Exelp

RETF

(команда RETF дальнего возврата из подпрограммы извлекает из стека два слова-смещение и сегмент адреса перехода-и помещает их соответственно в IP и CS).

Таким образом, сразу после получения управления фаг должен сохранить значения регистров АХ и DS и поместить в DS значение собственного сегмента данных. На практике сегмент данных в коротких ассемблерных программах обычно совпадает с сегментом кода, т.е. программа и данные размещаются в одном сегменте. Сегмент стека SS можно не изменять, т.к. программа-установщик фага должна позаботиться о том, чтобы стек не разрушил код самого фага, и соответствующим образом настроить ReloSS и/или ExelP. Обычно в ЕХЕ-программе начальное значение ReloSS таково, что стек размещается сразу за концом программы, т.е. в том месте, куда программа-установщик помещает "код фага. Длина стека ExeSP как правило более чем достаточна для того, чтобы работа фага со стеком не привела к разрушению кода фага, поэтому в большинстве случаев установщик оставляет начальные значения ReloSS и ExeSP без изменения.

4.1. Описание программ SetFag . pas и Fag . asm

В этом параграфе описываются программы SetFag.pas и Fag.asm, с помощью которых реализуется описанный выше механизм защиты. Программа SetFag (прил.П8.1) осуществляет установку фага, а программа Fag.asm (прил.П8.2) содержит сам фаг. Если Вы захотите воспользоваться предлагаемыми программами, откомпилируйте Турбо Ассемблером файл Fag.asm командой

tasmfag /L

В ходе компиляции на экран будет выведено 13 предупреждений вида

Warning* Open procedure: XXXXXX авконцесводка:

Error message: None Warning message: 13 Passes: I Remainig memory: XXXК

Если в строке Errormessage вместо None указано число обнаруженных ошибок, просмотрите файл листинга компиляции fag.lst, отыщите в нем •сообщения компилятора об ошибках и устраните их. Затем преобразуйте полученный файл fag.obj в программу Fag.prg командой

tiink fag, fag.prg

Компоновщик должен сообщить Warning: Nostack

Замечу, что программа Fag.prg не может работать самостоятельно без предварительной настройки установщиком SetFag.exe, поэтому в целях предосторожности ей присваивается нестандартное расширение PRG. Для установки защиты на любой ЕХЕ-фаил следует дать команду

setfagNAME,

где NAME-имя защищаемого файла. Иными словами, имя файла передается программе установки фага SetFag.exe с помощью параметров запуска. В имени NAME можно опускать стандартное расширение ЕХЕ, а также разрешается указать маршрут поиска файла и/или символы—заменители ДОС «*» и«?» для определения группового имени-в этом случае защита будет установлена на каждый файл, соответствующий групповому имени. Например, команда

setfagd:\mydir *

означает требование установить защиту на все ЕХЕ-файлы из каталога MYDIR на диске D.

Перед установкой зашиты программа осуществляет серию проверок файла. Она проверяет заголовок файла и блокирует установку защиты, если первые два байта заголовка не соответствуют сигнатуре «MZ» (признаку ЕХЕ-файла). Кроме того, она проверяет «хвост» файла с тем, чтобы убедиться в отсутствии кода фага, и блокирует повторную установку защиты на уже защищенный файл. Далее, защита не устанвливается также в том случае, если длина загружаемой части файла станет слишком большой (превысит доступную память). Если в конце файла обнаружена незагружаемая часть, программа информирует об этом пользователя и запрашивает у него подтверждение на установку за-щиты. После завершения всех проверок программа создает резервную копию исходного файла с расширением ВАК. Создание ВАК-файла можно запретить, если команду вызова дополнить ключом /NOBAK, например setfagmyprog /nobak. Для защиты используется ключ, соответствующий такой структуре данных:

К-во Просмотров: 397
Бесплатно скачать Курсовая работа: Защита программ от компьютерных вирусов