Конфигурация системы и типы составляющих ее устройств
В развитие идеи, изложенной выше, рассмотрим способ, при котором КЧЗП в качестве параметра использует всю конфигурацию системы. Конечно надо учитывать, что этот способ будет давать ошибки и отказывать в выполнении законной копии программы, если какие либо составляющие вычислительной системы будут изменены (например, отключен принтер), либо наоборот законная и незаконная копии программы будут работать на системах с одинаковой конфигурацией.
Рассмотрим способы определения параметров системы, которые используются затем в КЧЗП.
Для 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-го байта
| | Для определения типа дисплея надо проверить бит номер 1 байта, находящегося по адресу 0040:0087. Когда этот бит равен 1 - подсоединяется монохромный дисплей, а когда он равен 0 - цветной.
Получение инженерной информации жесткого диска
Контроллер IDE, SCSI имеет специальную команду выдачи информации о подключенном устройстве. Программа IdeInfo выдает блок 512 байт информации о жестком диске, если в системе есть контроллер IDE и жесткий диск. Информация содержит параметры диска и его серийный номер. Некоторые OS не дают доступ к этой информации.
Опрос справочников
Еще один способ защиты от несанкционированного использования информации называется опросом справочников. Он не обеспечивает стойкой, долговременной защиты программного обеспечения, но может быть легко реализован и очень удобен в работе. При его применении пользователь не обязан работать с дистрибутивной дискетой, можно и с ее копиями. Работа программ, защищенных на основе этого метода, и их копий делится на два этапа. Первый: получение от пользователя информации из некоторого источника, называемого справочником, и сравнение ее с эталонной. (То есть программа проверяет, действительно ли введенная информация находится в справочнике.) Второй: работа самой программы или ее копии. При этом необходимо сделать все возможное, чтобы текст справочника был доступен только законному пользователю, так как доступ к справочнику в этом методе снимает все преграды для работы программы. Описанная возможность работы с копиями, недоступная при реализации других методов защиты данных, заставляет изготовителей программного обеспечения применять этот способ в своих разработках.
В простейшем случае справочником является обычный текстовый файл, который пользователь располагает либо на дискете, либо на жестком диске, либо имеет его в качестве распечатки. Его можно сделать скрытым, если он расположен на магнитном носителе. Вместо текстового файла можно использовать служебную информацию, которая характеризует определенный класс машин. Однако в этом случае придется преодолевать дополнительные сложности при доступе к такой информации.
Сравнение введенной информации (пароля) с соответствующей информацией из текста справочника может быть осуществлено двумя способами:
1. Путем поиска информации в текстовом файле, расположенном на магнитном носителе, по указанным координатам и сравнения ее с введенной. Например, программа выдает запрос: "Введите пятое слово третьего абзаца седьмой страницы." Пользователь вводит слово. Программа считывает из текста справочника пятое слово третьего абзаца седьмой страницы и сравнивает его с введенным.
2. Путем сравнения слова из определенной части текста, представленного распечаткой, с данными, содержащимися в защищающей программе. Этот случай является как бы обратным к случаю 1. Программа содержит информацию, что в тексте справочника такие-то слова находятся в таких-то местах (например, слово "программа" является пятым словом третьего абзаца седьмой страницы, слово "справочник" - первое слово второго абзаца пятой страницы и т.д). В ответ на запрос программы, описанный в первом способе, пользователь в тексте справочника по указанным координатам ищет слово и вводит его. Программа сравнивает полученное слово с информацией, которой она располагает.
При небольшом по объему справочнике, а также малом запасе опрашиваемых парольных слов целесообразно список всех парольных слов разместить совершенно открыто в качестве файла на специальной дискете. Это позволит пользователю не держать в памяти информацию о том, какое слово где находится, и не тратить время на поиски нужного слова в справочнике, а снимать защиту самым элементарным образом, опробуя каждое слово из созданного списка. Но если эта дискета попадет в руки к постороннему лицу, то оно будет благодарно вам за возможность просто ознакомиться с вашими секретами.
Однако просмотр перед каждым запуском программы списка паролей и опробование каждого из них занимает довольно много времени. К тому же в таких системах часто возникают ошибки из-за неоднозначности решения: выделять или нет заголовок как отдельный абзац. Например, взяв пятое слово из третьего абзаца в качестве пароля, вы не можете запустить программу, так как автор выделил заголовок в отдельный абзац и требуемое слово находится не в третьем, а во втором абзаце текста, если рассматривать его без заголовка.
Из-за указанных недостатков описанный выше механизм чаще всего используются в качестве составной части многопрофильных систем защиты от копирования.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|