Защита от копирования

Системы защиты от копирования можно разделить на следующие группы:

В мировой практике существуют следующие способы распространения программ:

Большинство программ распространяется по принципу AS IS (как есть), общепринятым в международной компьютерной практике. Это означает, что за проблемы, возникающие в процессе эксплуатации программы, разработчик и распространитель ответственности не несут.

Защита программного продукта от несанкционированного копирования - актуальная задача в связи с сохранением коммерческих и авторских прав фирм и разработчиков. По сведениям зарубежных специалистов, экономический ущерб от "пиратского" копирования программного обеспечения составляет миллиарды долларов. Точные потери установить невозможно из-за отсутствия полных сведений о числе "пиратских" копий; считается, что с каждой программы их делается от 2 до 15. В Росии 95% используемого софта "пиратское", оставшиеся 5% - FreeWare.

С точки зрения профессионального программиста термин "защита от копирования" для IBM PC, работающей под управлением MS DOS/Windows, достаточно условен, так как практически всегда возможно переписать информацию, находящуюся на дискете или на жестком диске. Другое дело, что после этого программа может не выполняться. Таким образом, без санкции разработчика или фирмы-распространителя невозможно получить работоспособный программный продукт. То есть, фактически, "защита от копирования" - это создание средств, дающих возможность "защиты от несанкционированного выполнения".

Одной из распространенных технологий защиты от копирования, является создание особо определяемых дискет. Их особенность заключается в том, что на дискете создается специально организованная метка, которая используется как признак ее дистрибутивности. Функцию контроля метки выполняет специальная часть защищаемой программы. После копирования средствами OS защищаемого диска будет скопирована вся информация, за исключением метки. При выполнении программы ее контролирующая часть установит, что диск не дистрибутивный, и прервет выполнение программы. Тем самым программа как бы "привязывается" к своей дискете. Для создания метки применяются программные и аппаратные средства, а также их комбинирование.

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

Третий способ использовать ключи подключаемые к COM, LPT или USB портам.

Теперь давайте рассмотрим, что можно противопоставить "корсарам", рыщущим на волнах рынка software-продуктов.

Привязка к дискете

Для начала несколько слов об устройстве дискеты. Двухстороняя дискета 3.5" в дисководе 3.5". Скорость передачи данных дисководом 250 Кбит (DD) 500 Кбит (HD).
720 Kb 80 дорожек 9 секторов
800 Kb 80 дорожек 10 секторов
820 Kb 82 дорожки 10 секторов
830 Kb 83 дорожки 10 секторов (может не поддерживаться дисководом)
1.44 Mb 80 дорожек 18 секторов
1.52 Mb 80 дорожек 19 секторов
1.6 Mb 80 дорожек 20 секторов
1.68 Mb 80 дорожек 21 сектор (*)
1.72 Mb 82 дорожки 21 сектор (*)
1.74 Mb 83 дорожки 21 сектор (*) (может не поддерживаться дисководом)

(*) - При форматировании использовать Interlive(чередование секторов)=2, работает медленнее.

Файловая система на дискете FAT12.

Перестановка в нумерации секторов

При подготовке новой дискеты к работе она форматируется, т. е. определяется количество дорожек, длина сектора, количество секторов на дорожке, нумерация секторов (то есть формируется ID маркер) и производятся другие операции. Если эти действия осуществляются с установкой параметров (длины сектора, нумерации секторов, величины межсекторного промежутка и др.), отличных от принятых по умолчанию для системы MS DOS, то такой процесс будем называть нестандартным форматированием дискеты.

Один из методов зашиты от копирования основывается на перестановке номеров секторов на дорожке, то есть вместо обычной последовательности 1,2,3,4,5,6,7,8,9 вводится, например, 1,5,3,7,9,8,6,2,4.

При выполнении программы на скопированной дискете ее контролирующая часть определяет порядок следования секторов на заданной дорожке. Так как дискета, на которую осуществлено копирование, была отформатирована обычными средствами, то нумерация секторов установлена последовательная.

В дальнейшем контролирующая часть программы осуществляет сравнение вычисленного порядка следования секторов с установленным на дистрибутивной дискете. И так как порядок номеров не совпадает, то выполнение программы прекращается.

Введение одинаковых номеров секторов на дорожке

Другой схемой защиты, основанной на идее нестандартного форматирования, является способ, при котором часть секторов на определенной дорожке нумеруется одинаково. Например, 1,2,3,3,3,6,7,8,9. В эти сектора записываются некоторые различные данные.

Контролирующая часть защищаемой программы должна определить, имеется ли на дискете несколько секторов с одинаковым номером. Для этого она посылает запрос чтения данных из сектора, номер которого повторяется (в нашем примере из сектора 3). В этом случае контроллер НГМД при выводе головки чтения/записи на сектор 3 может считать любой сектор с данным номером. Этот процесс повторяется заданное количество раз подряд, и очередные считанные данные сравниваются с полученными ранее. В случае их различия делается вывод о наличии на дискете секторов с одинаковым номером. Если же за заданное количество повторений цикла N различия в данных не найдено, то делается вывод о единственности сектора с номером 3.

Так как дискета, на которую осуществлено копирование, была отформатирована обычными средствами, то нумерация секторов на всех дорожках устанавливается последовательной. Контролирующая часть защищаемой программы организует проверку на наличие нескольких секторов с одинаковыми номером. И так как каждый номер сектора на заданной дорожке присутствует только один раз, то выполнение программы прекращается.

Введение межсекторных связей

В одном из методов защиты от копирования используется модификация изложенного выше способа, применяющего организацию нескольких секторов с одинаковым номером на заданной дорожке.

Суть метода в следующем. На выделенной дорожке дистрибутивной дискеты путем применения специальной программы организуется несколько секторов с одинаковым номером и в них записываются некоторые различные данные. Пусть, например, номера на 79 дорожке заданы как 2,2,1,4,5,6,7,8,9 и в первом секторе с номером 2 записано "C", а во втором секторе 2 - "B". Берется еще одна дорожка, например, 78, и сектор на ней, например, 1-ый, и в него записывается некоторая информация, пусть "А". В контролирующей части защищаемой программы организуется чтение сектора 1 на 78 дорожке и сразу же запрос чтения сектора 2 на 79 дорожке. Тем самым всегда обеспечивается переход к чтению информации из второго сектора с номером 2 на дорожке 79, то есть мы прочитаем биграмму "AB" с дистрибутивной дискеты.

Пусть было произведено "пиратское" копирование дискеты с защищаемой программой на обычно отформатированную дискету. Контролирующая часть программы считывает 1-ый сектор с 78 дорожки. Далее идет запрос чтения сектора 2 на 79 дорожке. Так как сектора на "пиратской" дискете пронумерованы стандартно, то есть 1,2,3,4,5,6,7,8,9, то после запроса сектора 2 будет получено значение "C". Следовательно, будет прочитана биграмма "AC".

Таким образом, контролирующая часть защищаемой программы устанавливает, что если дискета не дистрибутивная, то прочитывается биграмма "AC", означающая, что считан сектор 2 с 79 дорожки, который находится на ином физическом расстоянии от начала дорожки по сравнению с расстоянием для сектора 2 на дистрибутивной дискете, когда считывается биграмма "AB". Программа прерывается.

Изменение длины секторов

Еще одна схема защиты, основанная на методе нестандартного форматирования, использует изменение длины сектора. Напомним, что стандартная длина сектора, с которой работает MS DOS по умолчанию, - 512 байт, при этом на дорожке размещается 9 секторов. В процессе специального форматирования дискеты на заданной дорожке длина секторов устанавливается либо 128, либо 256 байт.

Введенное изменение длины секторов на заданной дорожке определяется контролирующей частью защищаемой программы. Это осуществляется, например, путем обращения к сектору с максимальным номером, либо проверкой того, что длина секторов на указанной дорожке 128 (или 256) байт.

Стандартно отформатированная дискета, на которую проведено "пиратское" копирование защищаемой программы, имеет длину секторов на всех дорожках 512 байт (по 9 секторов на дорожке). В ходе выполнения защищаемой программы ее контролирующая часть осуществляет проверку длины секторов на заданной дорожке. Если контролирующая часть использует способ обращения к сектору с максимальным номером (большим 9), то такой сектор найден не будет (так как их только 9) и выполнение программы прекращается.

Аналогично работает контролирующая часть и в способе, в котором осуществляется проверка, что длина секторов 128 (или 256) байт.

Изменение межсекторных промежутков

Таблица базы дисков, с помощью которой частично управляется работа НГМД, содержит параметр, определяющий величину межсекторного промежутка. Выбирается дорожка на дискете, которая специальной программой форматируется заново с измененным значением межсекторного промежутка в таблице базы дисков, что ведет к нестандартному расположению секторов.

Контролирующая часть защищаемой программы при обращении к выбранной дорожке производит ее анализ и делает вывод, является ли дискета дистрибутивной.

Использование дополнительной дорожки

При этом способе защиты используется дополнительная, 81-ая дорожка на дистрибутивной дискете. Заметим, что на гибком диске имеется место для размещения еще трех дорожек, сверх принятых 80. Дисковод позволяет вести на них запись данных. Поэтому на дополнительной 81-ой дорожке на дистрибутивной дискете хранится информация для контролирующей части защищаемой программы.

При копировании на стандартно отформатированную дискету дополнительно введенная 81-ая дорожка воспринята не будет, что и обнаруживается контролирующей частью защищаемой программы.

Ведение логических дефектов в заданный сектор

Сначала необходимо сказать несколько слов о физическом и логическом строении дорожки на гибком диске. Как известно, начало дорожек на дискете отмечено индексным отверстием. Каждый сектор на дорожке имеет две части: секторный ID маркер и собственно данные. ID маркер имеет шесть байт и дополнительные байты, которые идентифицируют его для контроллера накопителя на гибких магнитных дисках (НГМД) как секторный маркер, а не как данные. Эти шесть байт следующие:

1-ый. Номер дорожки с 0 по 79 включительно.

2-ой. Номер стороны или номер головки. Верхняя сторона обозначается 0, нижняя - 1.

3-ий. Номер сектора на треке с 1 по 18 включительно.

4-ый. Размер сектора в байтах: 0,1,2 или 3 обозначают соответственно, 128-,256-,512- или 1024- байта в секторе. По умолчанию формат DOS имеет 512 байт в секторе.

5-ый и 6-ой. CRC байты для контроля при помощи циклического избыточного кода возможных искажений.

Четыре первых байта секторного ID маркера обозначаются как CHRN. CRC-байты фактически содержат 16-битную контрольную сумму CHRN-байт, которая вычисляется, когда сектор записывается. Когда же сектор читается, контрольная сумма перевычисляется для прочитанных из CHRN данных и сравнивается с данными из байтов CRC. Любое расхождение вызывает CRC-ошибку ID маркера.

Следующими за ID маркером идут несколько меточных байт маркера начала данных (BOD) и 512 байт собственно данных. Еще два проверочных байта CRC следуют за данными. Они содержат контрольную сумму 512 байт данных, вычисленную при записи сектора. Расхождение между контрольными суммами, записанной в CRC байтах и вычисленной при чтении, определяется как CRC-ошибка данных. После CRC-байтов первого сектора имеется межсекторный промежуток, затем идут другие сектора и межсекторные промежутки.

Теперь вам будет понятна идея метода защиты, основанного на использовании CRC-ошибки данных. Ее возникновение достигается следующим образом. Стандартная операция записи данных в сектор включает шесть шагов:

  1. Включение мотора НГМД и короткое ожидание его разгона.     
  2. Выполнение операции поиска заданного сектора и ожидание прерывания, указывающего на завершение данной операции.
  3. Инициализация микросхемы прямого доступа в память (DMA) 8237 для пересылки данных из памяти.
  4. Посылка команды записи микросхеме контроллера НГМД 765 и ожидание прерывания, указывающего на окончание пересылки данных.
  5. Получение информации о статусе контроллера НГМД.
  6. Выключение мотора.

На дистрибутивной дискете при выполнении операции записи в определенный сектор во время четвертого шага изложенной выше процедуры производится кратковременное отключение мотора НГМД, что приводит к искажению записываемых данных. Контрольная же сумма данных в CRCбайтах будет иметь значение, которое было получено по исходным передаваемым данным. Так что при чтении данных из этого сектора и подсчета их контрольной суммы полученное значение, будет отличаться от содержащегося в CRC-байтах. Таким образом, контролирующая часть защищаемой программы при попытке чтения заданного сектора обнаружит CRC-ошибку данных и определит дискету как дистрибутивную.

При копировании ранее искаженные данные на заданном секторе воспринимаются как истинные и по ним подсчитывается соответствующая контрольная сумма. Следовательно, при чтении данного сектора на скопированной дискете CRC-ошибка данных не возникает, и контролирующая часть защищаемой программы дискету отвергает.

Изменение параметров дисковода

Одной из схем создания защиты от копирования используется другая скорость вращения диска. Стандартная скорость вращения - 300 об/мин. Если ее понизить, скажем, до 280 об/мин, в то время как данные для записи передаются с прежней скоростью, то это понижение увеличивает плотность хранения данных на дискете, и на каждой дорожке образуется место для дополнительного десятого сектора. Это обстоятельство является основой защиты, так как работа с информацией, записанной на дискете, вращающейся с новой скоростью, возможна только при соответствующей модификации параметров дисковода.

Технология "ослабленных" битов

Способом записи информации на дискету является ее представление в виде 0 или 1. Данный метод защиты использует запись некоторого участка дистрибутивной дискеты с неопределенным уровнем сигнала. Таким образом, получается участок "ослабленных" битов. Данные с этого участка при их чтении несколько раз подряд будут восприниматься различным образом ввиду того, что сигнал может преобразовываться только в два дискретных значения - 0 или 1.

При копировании дистрибутивной дискеты участок "неопределенных" данных примет какое-то фиксированное значение.

Таким образом, контролирующая часть защищаемой программы организовывает чтение указанного участка несколько раз подряд. Если получаются одинаковые данные при всех запросах чтения, следовательно, дискета не дистрибутивная, и программа прерывается.

Физическая маркировка дискеты

Одной из наиболее известных технологий защиты от копирования является физическая пометка дискеты лазерным лучом путем ее прожигания. Такой дефект приводит к искажению данных в секторе и возникновению CRC ошибки данных при его чтении. При копировании пробивка не воспроизводится на принимающей дискете, хотя данные переписываются. Таким образом, CRC-ошибка данных при чтении сектора с копии не возникает.

Контролирующая часть защищаемой программы, производя чтение соответствующего сектора, это устанавливает и производит действия, предусмотренные разработчиком (прерывание выполнения программы, ее уничтожение и т.п.).

Проверка присутствия пробивки может производиться контролирующей частью программы и другим, более надежным способом. Она производит попытку записи в место, где должно находиться отверстие. Неудача - явный признак того, что дискета дистрибутивная. Если же запись производится успешно, следовательно, поверхность в данном месте не повреждена и дискета не дистрибутивная.

Рассмотренная технология применяется фирмой Vault Corporation в средстве PROLOK и его дальнейших модификациях.

Применение физического защитного устройства

Многие аппаратно - программные способы защиты основаны на том, что в компьютер добавляется специальное физическое защитное устройство. (Оно подключается, например, к порту ввода-вывода.) При запуске защищаемой программы ее контролирующая часть обращается к этому дополнительному устройству, проверяя его присутствие. Если оно не найдено (некоторые устройства еще и формируют код ответа, который затем анализируется), то производится останов программы, либо какие-то иные действия (например, уничтожение информации на дискете или "винчестере").

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

Один из наиболее распространненых в России защитных устройств это Hasp by "Алладин". Это небольшое устройство, подключаемое к параллельному порту компьютера. Существует несколько разновидностей ключей с памятью, с часами. Обращение к HASP происходит исключительно через API ключа и, к тому же, через одну и ту же точку. Соответственно, туда ставится подпрограмма - эмулятор ключа. Все прочие навороты не имеют никакого смысла. Кроме того, возможно копирование самого ключа или аппаратная эмуляция.

"Привязка" к компьютеру.

Как Вы уже возможно заметили, "привязка" программы к дистрибутивной дискете путем описанных ранее способов защиты несет в себе большое неудобство для пользователя, связанное с необходимостью работы только со вставленной в дисковод оригинальной дискетой. Гораздо удобнее иметь необходимый программный продукт записанным на винчестере. Поэтому необходимо, чтобы контролирующая часть защищаемой программы (КЧЗП) "запомнила" свой компьютер и потом при запуске сравнивала имеющиеся характеристики с характеристиками "родного" компьютера. В случае их расхождения можно считать, что программа незаконно скопирована, и прервать ее выполнение. Для этого надо найти какие-то параметры, которые бы индивидуально характеризовали каждую вычислительную систему. На самом деле это весьма нетривиальная задача, поскольку открытая архитектура построения компьютеров IBM PC подразумевает их обезличенность.

Рассмотрим, что все же можно предложить для КЧЗП в качестве характеристик, которые могли бы проверяться при работе защищаемой программы.

Физические дефекты винчестера

При работе жесткого диска (винчестера) возможно возникновение сбойных участков на магнитной поверхности. Такие дефектные места могут иметься даже на совершенно новом винчестере. Номера этих сбойных участков помещаются в FAT (их признак - код FF7). При инсталляции защищаемой программы на винчестер в ее контролирующую часть записываются их адреса. В процессе выполнения программы осуществляется сравнение адресов сбойных участков, записанных в КЧЗП и в FAT. В случае запуска незаконно скопированной программы будет обнаружено расхождение сравниваемых адресов (первые не будут составлять подмножество вторых) и произойдет выполнение аварийных действий, предусмотренных для такого случая.

Развитием этой идеи является метод, в котором некоторые исправные кластеры помечаются как сбойные, и в них помещается информация для КЧЗП. (При копировании такие кластеры не передаются.)

Дата создания BIOS

Можно попытаться сузить класс компьютеров, на которых возможно функционирование незаконно скопированной программы. Это достигается, например, путем введения проверки даты создания BIOS, которая записана в ПЗУ каждого компьютера. Эта дата заносится в КЧЗП, и в процессе выполнения защищаемой программы осуществляется сравнение дат создания BIOS, записанных в КЧЗП и ПЗУ компьютера. В случае если защищаемая программа будет незаконно скопирована и установлена на компьютер другой серии, то КЧЗП это обнаружит и будут выполнены аварийные действия.

Дата создания BIOS записана в ПЗУ по адресу FFFF:0005 и занимает 8 байтов.

Версия используемой OS

Так как версия операционной системы, с которой работает пользователь на данном компьютере, не меняется на протяжении достаточно длительного времени, то ее также можно использовать в качестве параметра для организации проверки в КЧЗП. Этот контроль желательно проводить в комплексе с другими методами защиты, например, дополнительно к проверке даты создания BIOS, что еще более суживает класс машин, на которых может работать защищаемая программа.

Серийный номер диска

При форматировании диска на него создается так называемый серийный номер, его несложно изменить с помощью программ типа DiskEdit.

Тип компьютера

Для обеспечения работы защищаемой программы только на компьютере одного клона надо, чтобы она могла определять его тип. Такая информация содержится в байте, расположенном по адресу FFFF:000E в ROM BIOS со следующей кодировкой:

PC - FF; XT - FE,FB; PCjr - FD; AT - FC; PS/2 - FC,FA,F8;

PC-совместимый - F9.

Конфигурация системы и типы составляющих ее устройств

В развитие идеи, изложенной выше, рассмотрим способ, при котором КЧЗП в качестве параметра использует всю конфигурацию системы. Конечно надо учитывать, что этот способ будет давать ошибки и отказывать в выполнении законной копии программы, если какие либо составляющие вычислительной системы будут изменены (например, отключен принтер), либо наоборот законная и незаконная копии программы будут работать на системах с одинаковой конфигурацией.

Рассмотрим способы определения параметров системы, которые используются затем в КЧЗП.

Для IBM AT параметры системы хранятся в так называемой CMOS памяти. Она имеет 64 однобайтовых регистра, пронумерованных от 00 до 3Fh. Назначения некоторых регистров представлены в табл. 1.

Таблица 1
Назначение некоторых регистров CMOS памяти
РЕГИСТРНАЗНАЧЕНИЕ
00hСекунды
01hSecond Alarm
02hМинуты
03hMinute Alarm
04hЧасы
05hHour Alarm
06hДень недели
07hДень месяца
08hМесяц
09hГод
10hТипы НГМД A: и B: (0000 - не установлен; 0001 - 360Кб; 0010 - 1.2Мб; 0011 - 1.44Мб)
12hТипы НЖМД C: и D: - для AT; D: - для PS/2
14hБайт установленной периферии
15h-16hРазмер памяти на основной системной плате (0100h - 256Кб; 0200h - 512Кб; 0280h - 640Кб)
17h-18hРазмер памяти канала ввода/вывода
30h-31hРазмер дополнительной памяти сверх 1Мбайта

Регистр 10h содержит информацию о НГМД: его биты 7-4 описывают накопитель A, а биты 3-0 - накопитель B. Аналогично сведения о НЖМД помещаются в регистр 12h.

Информация о периферии хранится в байте 14h CMOS памяти. Для ее получения надо сначала записать номер регистра (в данном случае 14h) в порт с адресом 70h, а затем прочитать содержимое регистра через порт 71h. (Для записи какого-то значения в регистр CMOS памяти надо занести адрес регистра в порт с адресом 70h, а значение - в порт 71h.). Значения битов регистра 14h представлены в табл. 2.

Таблица 2
Назначение битов 14h-го регистра CMOS памяти
БИТСОДЕРЖИМОЕЗНАЧЕНИЕ
7-6 00/01 Один/два НГМД
5-411/01/10Видеорежим (монохромный/цветной 40*25/цветной 80*25)
3-2Не используется
  11 Имеется математический сопроцессор
  00/1Нет/имеется НГМД
Компьютер может быть снабжен различными типами дисководов для гибких дисков и винчестеров. Рассмотрим с помощью каких средств можно получить информацию об их характеристиках кроме доступа к CMOS памяти.

Прерывание 21h DOS компьютера AT имеет функции 32h и 36h, связанные с определением характеристик установленных накопителей. Функция 36h сообщает текущие сведения о доступном пространстве на диске, номер которого загружается в регистр DL. Она возвращает:

Теперь легко узнать, каков объем диска, номер которого помещался в регистр DL. Для этого достаточно вычислить произведение значений регистров AX,CX,DX.

Функция 32h, позволяет получить таблицу с параметрами накопителя, номер которого загружен в регистр DL. Ее адрес будет содержаться в регистрах DX:BX. Подробное описание байтов этой таблицы можно найти в любом справочнике по прерываниям.

Состав установленного оборудования проверяется при загрузке, и результат проверки помещается в регистр статуса. Этот регистр занимает два байта, начиная с адреса 0040:0010, и в табл. 3 представлены значения его битов.

Для доступа к этому регистру кроме прямого обращения по адресу можно воспользоваться прерыванием 11h BIOS, которое возвращает два байта его значений в регистре AX.

В языке Turbo C имеется специальная функция BIOSEQUIP из библиотеки стандартных функций <bios.h>, которая возвращает целое число, описывающее оборудование, входящее в систему. Возвращаемое значение интерпретируется набором битовых полей, как представлено в табл. 4.

Таблица 3
Регистр состава установленного оборудования
БИТСОДЕРЖИМОЕЗНАЧЕНИЕ
0 0/1 Нет/есть НГМД
1 0/1 Нет/есть математический сопроцессор 80x87
2-3 11 Оперативная память 64 Кбайта
(в AT не используется и всегда равна 11)
4-5 11/01/10 Начальный видеорежим (монохромный/цветной 40*25/
цветной 80*25)
6-700/01/10/11Число НГМД, если бит 0 =1 (соответственно 1,2,3,4)
8  XT/AT не используется (наличие микросхемы DMA)
9-11  Число адаптеров коммуникации RS232
12 1 Есть игровой адаптер (в AT не используется)
13  XT/AT не используется
14-15  Число присоединенных принтеров

Еще одно прерывание BIOS - 15h через функцию C0h позволяет получить адрес в ПЗУ, определяемый регистрами ЕS:BX, по которому находится табл. 4.

Таблица 4
БАЙТЫЗНАЧЕНИЕ
0-1Число байтов в таблице
2Код модели компьютера (см. выше)
3Различие между AT и XT/286 (подмодель)
4Номер ревизии BIOS
5
80h - 3-й канал DMA, используется BIOS
40h - второй контроллер прерываний i8259 установлен
20h - таймер реального времени установлен
10h - int15h/AH=4Fh вызывается перед int 9h
8h - допустимо ожидание внешнего события
4h - расширение BIOS размещено в 640 Кбайтах
2h - шиной является Micro Channel вместо шины ISA
1h - резерв
Замечание: 1/10/86 XT BIOS возвращает
некорректное значение 5-го байта

Для определения типа дисплея надо проверить бит номер 1 байта, находящегося по адресу 0040:0087. Когда этот бит равен 1 - подсоединяется монохромный дисплей, а когда он равен 0 - цветной.

Получение инженерной информации жесткого диска

Контроллер IDE, SCSI имеет специальную команду выдачи информации о подключенном устройстве. Программа IdeInfo выдает блок 512 байт информации о жестком диске, если в системе есть контроллер IDE и жесткий диск. Информация содержит параметры диска и его серийный номер. Некоторые OS не дают доступ к этой информации.

Опрос справочников

Еще один способ защиты от несанкционированного использования информации называется опросом справочников. Он не обеспечивает стойкой, долговременной защиты программного обеспечения, но может быть легко реализован и очень удобен в работе. При его применении пользователь не обязан работать с дистрибутивной дискетой, можно и с ее копиями. Работа программ, защищенных на основе этого метода, и их копий делится на два этапа. Первый: получение от пользователя информации из некоторого источника, называемого справочником, и сравнение ее с эталонной. (То есть программа проверяет, действительно ли введенная информация находится в справочнике.) Второй: работа самой программы или ее копии. При этом необходимо сделать все возможное, чтобы текст справочника был доступен только законному пользователю, так как доступ к справочнику в этом методе снимает все преграды для работы программы. Описанная возможность работы с копиями, недоступная при реализации других методов защиты данных, заставляет изготовителей программного обеспечения применять этот способ в своих разработках.

В простейшем случае справочником является обычный текстовый файл, который пользователь располагает либо на дискете, либо на жестком диске, либо имеет его в качестве распечатки. Его можно сделать скрытым, если он расположен на магнитном носителе. Вместо текстового файла можно использовать служебную информацию, которая характеризует определенный класс машин. Однако в этом случае придется преодолевать дополнительные сложности при доступе к такой информации.

Сравнение введенной информации (пароля) с соответствующей информацией из текста справочника может быть осуществлено двумя способами:

1. Путем поиска информации в текстовом файле, расположенном на магнитном носителе, по указанным координатам и сравнения ее с введенной. Например, программа выдает запрос: "Введите пятое слово третьего абзаца седьмой страницы." Пользователь вводит слово. Программа считывает из текста справочника пятое слово третьего абзаца седьмой страницы и сравнивает его с введенным.

2. Путем сравнения слова из определенной части текста, представленного распечаткой, с данными, содержащимися в защищающей программе. Этот случай является как бы обратным к случаю 1. Программа содержит информацию, что в тексте справочника такие-то слова находятся в таких-то местах (например, слово "программа" является пятым словом третьего абзаца седьмой страницы, слово "справочник" - первое слово второго абзаца пятой страницы и т.д). В ответ на запрос программы, описанный в первом способе, пользователь в тексте справочника по указанным координатам ищет слово и вводит его. Программа сравнивает полученное слово с информацией, которой она располагает.

При небольшом по объему справочнике, а также малом запасе опрашиваемых парольных слов целесообразно список всех парольных слов разместить совершенно открыто в качестве файла на специальной дискете. Это позволит пользователю не держать в памяти информацию о том, какое слово где находится, и не тратить время на поиски нужного слова в справочнике, а снимать защиту самым элементарным образом, опробуя каждое слово из созданного списка. Но если эта дискета попадет в руки к постороннему лицу, то оно будет благодарно вам за возможность просто ознакомиться с вашими секретами.

Однако просмотр перед каждым запуском программы списка паролей и опробование каждого из них занимает довольно много времени. К тому же в таких системах часто возникают ошибки из-за неоднозначности решения: выделять или нет заголовок как отдельный абзац. Например, взяв пятое слово из третьего абзаца в качестве пароля, вы не можете запустить программу, так как автор выделил заголовок в отдельный абзац и требуемое слово находится не в третьем, а во втором абзаце текста, если рассматривать его без заголовка.

Из-за указанных недостатков описанный выше механизм чаще всего используются в качестве составной части многопрофильных систем защиты от копирования.

Введение ограничений на использование программного обеспечения

В одном из способов защиты программного обеспечения от незаконного использования применяются ограничения по:

Иногда изготовители программного обеспечения накладывают ограничения на срок его работы у определенного пользователя, то есть как бы выдают временную лицензию, по истечении срока которой происходит либо самоуничтожение программы, либо она перестает работать. Идея, лежащая в основе этого метода, достаточно прозрачна: нужно только получить текущую дату из таймера, а затем, сравнив с "лицензионным" сроком использования, либо разрешить работу программы, либо запретить. Однако и недостаток данного метода защиты ясен: можно просто изменить дату, установленную в таймере, и тогда программа будет выполняться незаконно.

Еще одним способом ограничить использование программного обеспечения является введение счетчика запусков. Обычно такой счетчик устанавливают в:

Уменьшая значение счетчика при каждом запуске, контролирующая часть программы следит за ним и при достижении нулевого значения выполняет предусмотренные разработчиком действия.

Оглавление


© Колесников Дмитрий Геннадьевич Rambler's Top100 Учебник по СайтоСтроению

KIPOR IG 2000