не обнаружила дискету в приводе ГД и не смогла проверить легальность
КОПИИ.
Процедура ProtCheck начинает работу с проверки поля Hard в глобальной типизированной константе Key. Это поле используется для анализа стационарности программы: если поле имеет значение 0, реализуется контроль мобильного варианта, в противном случае — стационарного варианта (установка поля Hard и всей константы Key осуществляется с помощью функции SetOnHD, см. ниже).
При контроле мобильного варианта программа пытается прочитать сначала на диске А, а если это не удается — на диске В ключевой сектор (первый сектор на нулевой поверхности дорожки номер 40) размером 256 байт. Этот сектор должен содержать следующую информацию:
Номер байта |
Назначение |
1 |
Ключ для шифровки содержимого сектора с помощью операции XOR |
17 |
Количество уже созданных стационарных копий |
200 |
Максимальное количество стационарных копий (если 255 — количество копий не ограничено) |
256 |
Контрольная сумма со 2—то по 255—и байт |
Если поле Hard константы Key содержит ненулевое значение, осуществляется контроль стационарного варианта. В этом случае поле Dat содержит эталон даты создания ПЗУ, а поле Hard используется как ключ для шифровки этого поля с помощью операции XOR.
Важно заметить, что если контроль стационарного варианта дает отрицательный результат (нелегальная копия), автоматически осуществляется анализ мобильного варианта (контроль дискеты). Таким образом, любая копия программы гарантированно работает, если в распоряжении пользователя есть ключевая дискета. Однако после правильной установки программы на жесткий диск с помощью процедуры SetOnHD программа может работать и без этой дискеты до тех пор, пока она не будет перенесена на новый компьютер, дата создания ПЗУ которого отличается от эталонной.
Для правильного создания стационарной копии программы используется функция SetOnHD, имеющая следующий заголовок:
Function SetOnHD: Integer;
Перед использованием функции SetOnHD необходимо любыми стандартными для ДОС средствами скопировать программу в один из каталогов жесткого диска. Эта функция вызывается в такой «нелегальной» копии, перед этим в любой привод ГД необходимо вставить ключевую дискету со снятой защитой от записи (с незаклеенной прорезью). Результат, возвращаемый функцией, имеет следующий смысл:
— 1 — в привод ГД не вставлена дискета;
— 2 — в привод вставлена дискета не эталонного типа (не 360 Кбайт или нет скрытого сектора);
—3 — дискета защищена от записи или при записи на нее возникла ошибка;