Физические дефекты винчестера
При работе жесткого диска (винчестера) возможно возникновение сбойных участков на магнитной поверхности. Такие дефектные места могут иметься даже на совершенно новом винчестере. Номера этих сбойных участков помещаются в FAT (их признак - код FF7). При инсталляции защищаемой программы на винчестер в ее контролирующую часть записываются их адреса. В процессе выполнения программы осуществляется сравнение адресов сбойных участков, записанных в КЧЗП и в FAT.
В случае запуска незаконно скопированной программы будет обнаружено расхождение сравниваемых адресов (первые не будут составлять подмножество вторых) и произойдет выполнение аварийных действий, предусмотренных для такого случая.
Развитием этой идеи является метод, в котором некоторые исправные кластеры помечаются как сбойные, и в них помещается информация для КЧЗП. (При копировании такие кластеры не передаются.)
Дата создания BIOS и тип компьютера
Можно попытаться сузить класс компьютеров, на которых возможно функционирование незаконно скопированной программы. Это достигается, например, путем введения проверки даты создания BIOS, которая записана в ПЗУ каждого компьютера. Эта дата заносится в КЧЗП, и в процессе выполнения защищаемой программы осуществляется сравнение дат создания BIOS, записанных в КЧЗП и ПЗУ компьютера. В случае если защищаемая программа будет незаконно скопирована и установлена на компьютер другой серии, то КЧЗП это обнаружит и будут выполнены аварийные действия.
Дата создания BIOS записана в ПЗУ по адресу FFFF:0005 и занимает 8 байтов.
Для обеспечения работы защищаемой программы только на компьютере одного клона надо, чтобы она могла определять его тип. Такая информация содержится в байте, расположенном по адресу 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
| Секунды
| 01h
| Second Alarm
| 02h
| Минуты
| 03h
| Minute Alarm
| 04h
| Часы
| 05h
| Hour 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-4
| 11/01/10
| Видеорежим (монохромный/цветной 40*25/цветной 80*25)
| 3-2
| Не используется
|
|
| Имеется математический сопроцессор
|
| 0/1
| Нет/имеется НГМД
|
| Компьютер может быть снабжен различными типами дисководов для гибких дисков и винчестеров. Рассмотрим с помощью каких средств можно получить информацию об их характеристиках кроме доступа к CMOS памяти.
Прерывание 21h DOS компьютера AT имеет функции 32h и 36h, связанные с определением характеристик установленных накопителей. Функция 36h сообщает текущие сведения о доступном пространстве на диске, номер которого загружается в регистр DL. Она возвращает:
· Число секторов на один кластер в регистре AX.
· Число незанятых кластеров - в BX.
· Число байтов в одном секторе - в CX.
· Число кластеров на диске - в DX.
Теперь легко узнать, каков объем диска, номер которого помещался в регистр DL. Для этого достаточно вычислить произведение значений регистров AX,CX,DX.
Функция 32h, позволяет получить таблицу с параметрами накопителя, номер которого загружен в регистр DL. Ее адрес будет содержаться в регистрах DX:BX. Подробное описание байтов этой таблицы можно найти в любом справочнике по прерываниям.
Состав установленного оборудования проверяется при загрузке, и результат проверки помещается в регистр статуса. Этот регистр занимает два байта, начиная с адреса 0040:0010, и в табл. 3 представлены значения его битов.
Для доступа к этому регистру кроме прямого обращения по адресу можно воспользоваться прерыванием 11h BIOS, которое возвращает два байта его значений в регистре AX.
В языке Turbo C имеется специальная функция BIOSEQUIP из библиотеки стандартных функций <bios.h>, которая возвращает целое число, описывающее оборудование, входящее в систему. Возвращаемое значение интерпретируется набором битовых полей, как представлено в табл. 4.
Таблица 3. Регистр состава установленного оборудования
| БИТ
| СОДЕРЖИМОЕ
| ЗНАЧЕНИЕ
|
| 0/1
| Нет/есть НГМД
|
| 0/1
| Нет/есть математический сопроцессор 80x87
| 2-3
|
| Оперативная память 64 Кбайта (в AT не используется и всегда равна 11)
| 4-5
| 11/01/10
| Начальный видеорежим (монохромный/цветной 40*25/ цветной 80*25)
| 6-7
| 00/01/10/11
| Число НГМД, если бит 0 =1 (соответственно 1,2,3,4)
|
|
| XT/AT не используется (наличие микросхемы DMA)
| 9-11
|
| Число адаптеров коммуникации RS232
|
|
| Есть игровой адаптер (в AT не используется)
|
|
| XT/AT не используется
| 14-15
|
| Число присоединенных принтеров
|
| Еще одно прерывание BIOS - 15h через функцию C0h позволяет получить адрес в ПЗУ, определяемый регистрами ЕS:BX, по которому находится табл. 4.
Таблица 4
БАЙТЫ
| ЗНАЧЕНИЕ
| 0-1
| Число байтов в таблице
|
| Код модели компьютера (см. выше)
|
| Различие между AT и XT/286 (подмодель)
|
| Номер ревизии BIOS
|
| 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-го байта
|
| Для определения типа дисплея надо проверить первый бит байта, находящегося по адресу 0040:0087. Когда этот бит равен 1 – подсоединяется монохромный дисплей, а когда он равен 0 - цветной.
Получение инженерной информации жесткого диска
Контроллер IDE, SCSI имеет специальную команду выдачи информации о подключенном устройстве. Программа IdeInfo выдает блок 512 байт информации о жестком диске, если в системе есть контроллер IDE и жесткий диск. Информация содержит параметры диска и его серийный номер. Некоторые OS не дают доступ к этой информации.
Опрос справочников
Еще один способ защиты от несанкционированного использования информации называется опросом справочников. Он не обеспечивает стойкой, долговременной защиты программного обеспечения, но может быть легко реализован и очень удобен в работе. При его применении пользователь не обязан работать с дистрибутивной дискетой, можно и с ее копиями. Работа программ, защищенных на основе этого метода, и их копий делится на два этапа.
Первый: получение от пользователя информации из некоторого источника, называемого справочником, и сравнение ее с эталонной. (То есть программа проверяет, действительно ли введенная информация находится в справочнике.)
Второй: работа самой программы или ее копии. При этом необходимо сделать все возможное, чтобы текст справочника был доступен только законному пользователю, так как доступ к справочнику в этом методе снимает все преграды для работы программы.
Описанная возможность работы с копиями, недоступная при реализации других методов защиты данных, заставляет изготовителей программного обеспечения применять этот способ в своих разработках.
В простейшем случае справочником является обычный текстовый файл, который пользователь располагает либо на дискете, либо на жестком диске, либо имеет его в качестве распечатки. Его можно сделать скрытым, если он расположен на магнитном носителе. Вместо текстового файла можно использовать служебную информацию, которая характеризует определенный класс машин. Однако в этом случае придется преодолевать дополнительные сложности при доступе к такой информации.
Сравнение введенной информации (пароля) с соответствующей информацией из текста справочника может быть осуществлено двумя способами:
· 1. Путем поиска информации в текстовом файле, расположенном на магнитном носителе, по указанным координатам и сравнения ее с введенной. Например, программа выдает запрос: «Введите пятое слово третьего абзаца седьмой страницы». Пользователь вводит слово. Программа считывает из текста справочника пятое слово третьего абзаца седьмой страницы и сравнивает его с введенным.
· 2. Путем сравнения слова из определенной части текста, представленного распечаткой, с данными, содержащимися в защищающей программе. Этот случай является как бы обратным к случаю 1. Программа содержит информацию, что в тексте справочника такие-то слова находятся в таких-то местах (например, слово «программа» является пятым словом третьего абзаца седьмой страницы, слово «справочник» - первое слово второго абзаца пятой страницы и т. д).
· 3. В ответ на запрос программы, описанный в первом способе, пользователь в тексте справочника по указанным координатам ищет слово и вводит его. Программа сравнивает полученное слово с информацией, которой она располагает.
При небольшом по объему справочнике, а также малом запасе опрашиваемых парольных слов целесообразно список всех парольных слов разместить совершенно открыто в качестве файла на специальной дискете.
Это позволит пользователю не держать в памяти информацию о том, какое слово где находится, и не тратить время на поиски нужного слова в справочнике, а снимать защиту самым элементарным образом, опробуя каждое слово из созданного списка. Но если эта дискета попадет в руки к постороннему лицу, то оно будет благодарно вам за возможность просто ознакомиться с вашими секретами.
Однако просмотр перед каждым запуском программы списка паролей и опробование каждого из них занимает довольно много времени. К тому же в таких системах часто возникают ошибки из-за неоднозначности решения: выделять или нет заголовок как отдельный абзац. Например, взяв пятое слово из третьего абзаца в качестве пароля, вы не можете запустить программу, так как автор выделил заголовок в отдельный абзац и требуемое слово находится не в третьем, а во втором абзаце текста, если рассматривать его без заголовка.
Из-за указанных недостатков описанный выше механизм чаще всего используются в качестве составной части многопрофильных систем защиты от копирования.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|