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

Warning: No stack

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

Для установки защиты на любой ЕХЕ—фа&л.1 следует дать команду

setfag NAME

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

setfag d:\mydir *

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

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

setfag rayprog /nobak Для защиты используется ключ, соответствующий такой структуре данных:

type

HeadType = record case Byte of

1: (

Sign Word {Сигнатура 'MZ' = $5A4D} PartPag Word {Часть неполного сектора} PageCnt Word {Количество 'секторов} ReloCnt Word {Количество элементов в

таблице перемещения} HdrSize Word {Длина заголовка в параграфах} MinMem Word {Минимальный размер кучи} MaxMem Word {Максимальный размер кучи}

' Разумеется, фаг нельзя устанавливать на файлы, защищенные средствами модуля F_Anti (см. п.6.3.2), так как в этом случае процедура CheckFile этого модуля обнаружит изменение заголовка и удалит фаг. Кроме того, фаг пристыковывается в конец программы и, следовательно, не может защищать крупные программы. Последнее обстоятельство контролируется установщиком SetFag,