введен для синхронизации начала вычислений с началом очередного 55 — миллисекундного интервала. Как показывает практика, получаемая такой программой оценка производительности очень индивидуальна. Мне, например, не удалось найти среди 8 однотипных компьютеров ни одной пары с одинаковой числовой мерой производительности. Следует, правда, оговориться, что на двух ПК эта мера менялась от одного прогона программы к другому приблизительно на 0.5%, что, судя по всему, является следствием нестабильности работы тактовых генераторов. В связи с этим при разработке коммерческой системы защиты на основе измерения производительности ПК необходимо вводить некоторый доверительный интервал, связанный с нестабильностью работы тактовых генераторов, а это — увы! — существенно уменьшает степень индивидуальности оценки.
7.2.5. Использование скрытых частей программы и особенностей физических носителей информации
Достаточно эффективным способом защиты (главным образом для мобильных программ) может служить создание и использование скрытых частей программы и/или особенностей физических носителей информации.
Скрытые части программы — это участки дискового носителя, тем или иным способом связанные с программой, но не зафиксированные в качестве файлов ДОС. В подавляющем большинстве случаев программе нет необходимости искусственно создавать такие участки, поскольку они уже имеются в «хвосте» любого файла. Дело в том, что ДОС распределяет дисковое пространство кластерами, имеющими длину от 512 до 4096 и более байтов. Даже если полезная длина файла составляет всего несколько байт, ДОС выделяет такому файлу целый кластер, большая часть которого будет заполнена «мусором» — случайной информацией, сохранившейся от предыдущего использования кластера в составе другого файла. При копировании файлов стандартными средствами ДОС копируется только полезная часть кластера, так что на новом месте «хвост» файла в общем случае будет заполнен другой информацией.
Следующий простой пример иллюстрирует использование скрытой части файла для защиты программы от нелегального копирования. В этом примере программа управляется с помощью параметра запуска «/S»: если команда запуска программы дополнена этими символами, программа вводит с клавиатуры произвольную строку и помещает ее в «хвост» файла, в противном случае читает строку с диска и выводит ее на экран.
_•+——————————.——————————————————+
I Программа создает и контролирует скрытую \ ¦ часть файла. При запуске без ключа /S \ '. осуществляется контроль файла, при запуске ¦ i с ключом - создание скрытой части. ¦ +—————————.———,————————————————+/
var
F: File; {Файловая переменная для файла программы}