Защита программ от нелегального копирования______________________ 173
7.2.2. Проверка даты изготовления и контрольной суммы ПЗУ
Постоянное запоминающее устройство (ПЗУ) является неотъемлемой составной частью любого ИРМ—совместимого ПК. Содержимое ПЗУ учитывает особенности реализации конкретного ПК и может отличаться в компьютерах разного типа. Более того в конце ПЗУ (по адресу $FOOO:$FFF5) обычно записывается дата его изготовления, поэтому даже для ПК одного типа (и одной и той же фирмы—изготовителя) контрольная сумма ПЗУ отличается в разных экземплярах ПК.
Дата изготовления ПЗУ находится по адресу $FOOO: $FFF5 и занимает 8 смежных байт. Данные хранятся в символьном виде в формате MM/DD/YY (ММ — символы номера месяца, DD — номера дня, YY — номера года), например «06/26/92». Следующая программа выводит на экран дату изготовления ПЗУ:
var
k: Integer;
begin
for k -.^ 0 to 7 do
Write(chr(Mem[$FOOO:$FFF5+k])) ;
WriteLn end.
Как показывает практика, любая уважающая себя фирма—изготовитель ПЗУ для IBM— совместимых ПК тщательно следит за корректностью этой даты. Конечно, каждый день во всем мире изготавливаются тысячи микросхем ПЗУ с одинаковой датой, однако вероятность того, что на конкурирующей с Вами фирме используются ПК того же типа и с такой же датой изготовления, как и у Вашего компьютера, согласитесь, крайне мала. Разумеется, при массовой закупке ПК, например для оснащения учебного класса многие или даже все одновременно приобретенные компьютеры могут иметь одну и ту же дату изготовления ПЗУ. Однако в таких случаях способность защищенных программ свободно переноситься с одного родственного компьютера на другой можно рассматривать как вполне естественную.
Эта проверка используется для защиты стационарных программ.
7.2.3. Проверка места расположения файла на диске
Хорошей индивидуальностью обладает физический номер кластера, начиная с которого на жестком диске располагается файл с защищенной программой. Действительно, вряд ли что-либо другое в аппаратно— программной среде ПК (кроме, разумеется, содержимого оперативной памяти) меняется столь же динамично, как файловая структура жесткого диска. При создании легальной копии номер начального кластера для файла программы на жестком диске в общем случае совершенно случаен. Если в момент запуска программа проверит этот номер, то в подавляющем большинстве случаев она легко обнаружит факт нелегального копирования.