3f4'_____________ _ _____________.....__.. .„.. ___..„._„ „_ ..„PPM0*81*^

'<FAG> - имя ЕХЕ-файла с коДом фага; если ключ не задан» Код',

' берется из файла FAG.PRG;',

'Ключ /NOBAK блокирует создание резервных копий защищаемых фай-',

'лов (с расширением ВАК).',

'Примеры:',

' eetfag ffiyprog'^

'Файл MYPROG.EXE будет содержать защищенную программу,MYPROG.ВАК',

'- исходную. Код фага будет взят из файла FAG.PRG',

' setfag d:\dir\* /nobak /f:myfag.exe',

•Защищаются все ЕХЕ-файлы из каталога D:\DIR, резервные копии не',

' создаются, код фага берется из MYFAG.EXE.',

' (С) В.В.Фаронов, 1992');

type

HeadType » record case Byte of 1: (

Sign : Word? {Сигнатура 'MZ' - $5A4D)

PartPag: Word; fVaoa'b йвпалного сектора}

PageCnt: Word; {Количество секторов)

ReioCnt: Word; (Количество элементов в таблице перемещения)

HdrSize: Word; {Длина заголовка в параграфах)

MinMem : Word; (Минимальный размер кучи)

MaxMem : Word; {НаксчмальныЯ рааивр кучи)

Re^oSS : Word; {Начальное значение сегмента стека SS}

ExeSP : Word; {Начальное значение указателя стека SP)

ChkSum : Word; {Контрольная сумма всех слов файла)

ExelP : Word; {Смещение точки запуска программы)

ReloCS : Word; (Начальное значение сегмента кода CS)};

2:W: array [1..12] о- Word) end;

ТКеу = record

Head.24: HeadType; {24 байта эталонного заголовка) Starts: Word; (OTHOWt'enlstaM сёТиент} StartO: Word; (и смещение точки запуска программы) Leng24: LongInt; {Длина незараженной программы минус 24 байта) Key : Word; {Клвч гжфрваки) end;

ByteArr = array [l..Max!nt] of Bytey var

H,HFag: HeadType;

HH : TKey;

fe, {ЕХЕ-файл} ft: file; (Файл с кодой фага} LFag: LongInt; {Длина кода фага) CFag: ^ByteArr; (Указатель на код фага} NE: String; (Имя исходного ЕХЕ-файла} NF: String; (Имя файла с кодом фага) S: SearchRec;

d: DirStr;

n: NameStr;

e: ExtStr;

LS: LongInt; {Смещение для фага} const

FagName = 'Fag.pre'; (Имя файла-фага BakFile : Buolean ~ True; (Признак ВАК-файлов} f., —————_-——-——;

Procedure Help;

{Выводит справку об использовании программы и завершает работу) const

Bord = 14;

var