нительной дорожки, может оказаться ничуть не хуже, чем защита с помощью «лазерной дырки».

Как известно, ДОС может оперировать только с секторами длиной по 512 байт (исключением является создание утилитой VDISK виртуальных электронных дисков, размер секторов которых может отличаться от 512 байт). В то же время контроллеры ГД способны создавать и использовать секторы другого размера — по 128, 256 или 1024 байт. При обнаружении сектора нестандартного размера ДОС считает этот сектор сбойным, что можно использовать для защиты программы.

Далее, дорожки на диске располагаются так, что самой внешней является нулевая дорожка, а самой внутренней — дорожка с максимальным номером. Обычно ДОС использует одинаковое количество секторов на всех дорожках, поэтому угловой размер каждого сектора постоянен, а следовательно, плотность записи информации растет с ростом номера дорожки. Количество секторов на дорожке и дорожек на дискете ДОС назначает так, чтобы даже для самой внутренней дорожки эта плотность не превысила некоторого значения, еще гарантирующего уверенную работу схем контроллера ГД. На практике оказывается, что подавляющее большинство современных контроллеров способно обслуживать большее количество дорожек, чем принято в ДОС. В целях защиты от копирования программа может создать и использовать одну или несколько дополнительных дорожек, но не вносить их в список «видимых для ДОС», т.е. не изменять поле BPB.TotSecs в загрузочном секторе, указывающее общее количество секторов на диске. Разумеется, возможен и другой вариант:

можно «украсть» у ДОС несколько дорожек, уменьшив стандартное значение этого поля, однако нестандартная емкость дискеты легко обнаруживается, что снижает эффективность защиты. Заметим, что дополнительные дорожки могут отделяться от основной рабочей зоны дискеты неотформатированным интервалом, что может затруднить их обнаружение специальными программами копирования.

Наконец, программа может использовать нестандартный фактор чередования секторов. Напомню (см. гл.3), что этот фактор влияет на время чтения/записи группы смежных секторов. Если какую-либо дорожку отформатировать с намеренно неоптимальным фактором чередования, время чтения этой дорожки может оказаться заметно больше, чем при чтении любой другой дорожки — вот Вам и еще один способ защиты!

В приводимой в прил.ПЮ.1 программе Diskette иллюстрируется использование всех трех перечисленных параметров. На дискете емкостью 360 Кбайт создается 41—я дорожка с девятью секторами размером по 256 байт, причем для нее используется обратный фактор чередования, т.е. секторы на дорожке размещаются в последовательности 9,8,...,2,1. После этого в первый сектор новой дорожки записывается произвольная информация, затем сектор читается и проверяется правильность операций записи—чтения. В конце программы измеряется время доступа к новой дорожке и стандартной дорожке.

1 Л 1 А &