k: Word;
p: ^yteArr;
label
NotFag^ const
ЬхЫ"'Файл ';
txt2=' содержит оверлеи, архив или отладочную информацию.';
begin
CheckFile := False;
BlockRead(fe,H,SizeOf(H),k); {Читаем заголовок} if not CheckRead(NE,SizeOf(H),k) then
goto Not Fag; {Ошибка чтения} if H.Sign <> $5A4D then begin
WriteLn('Файл ',NE,' не является ЕХЕ-программой!');
NotFag:
WriteLn('Защита не установлена');
Exit end else begin
if FileSize(fe)-H.HdrSize*16>LFag then {Проверяем и блокируем повторную защиту} begin
GetMem(p,LFag);
Seek(fe,FileSize(fe)-LFag) ;
BlocltReadffetp^LFag,k) ;
k := LFag div 2; {Сравниваем, начиная с середины кода} repeat
inc (k) until (k>LFag) or (p" [k] OCFag^ [k] ) ;
FreeMem(p,LFag) ;
if k > LFag then begin
WriteLn('Файл ',NE,' уже защищен!');
Exit end end;
{Проверяем размер программы}
Intr($12,r); {Получаем объем памяти} LS := FileSize(fe)+LFag+SizeOf(HH)+15;
if r.AX*lO24.0-LS-H.MinMem*16 <= 0 then begin
WriteLn('Файл ',NE,' слишком велик!') ;
goto NotFag end;
if (FileSize(fe)+15) div 16>H.PageCnt+H.HdrSize then begin
WriteLn(txtl,NE,txt2) ;
Write('Устанавливать защиту (У/М,умлч.У)? ');
ReadLn(s);
if s»1 ' then s : - ' Y ' ;
if UpCase(s[l]) = 'N' then
goto NotFag end;
HH.Head24 := H;
with HH,HH.Head24 do