Привязка к BIOS
Рассмотрим теперь использование BIOS для защиты от копирования программ с жесткого диска.
Программа может определить дату изготовления BIOS, прочитав 8 байт из области памяти, расположенной по адресу F000h:FFF5h.
Более подробную информацию о BIOS можно получить, воспользовавшись функцией C0h прерывания INT15h . Эта функция возвращает в регистрах ES:BX адрес таблицы конфигурации:
Смещение, байт | Размер, байт | Описание |
0 | 2 | Размер таблицы в байтах |
2 | 1 | Код модели компьютера |
3 | 1 | Дополнительный код модели |
4 | 1 | Версия изменений BIOS (0 - первая реализация, 2 - вторая и т. д.) |
5 | 1 | Байт конфигурации оборудования |
6 | 2 | Зарезервировано |
8 | 2 | Зарезервировано |
Анализируя байт конфигурации оборудования, можно определить состав аппаратного обеспечения:
Бит | Описание |
0 | Зарезервировано |
1 | Если этот бит установлен, компьютер оборудован шиной Micro Channel, в противном случае используется шина ISA, PCI или EISA |
2 | Используется расширенная область данных BIOS |
3 | BIOS способна ожидать внешние события |
4 | Каждый раз после вызова прерывания от клавиатуры INT 9h вызывается функция 4Fh прерывания INT 15h |
5 | В компьютере есть часы реального времени |
6 | Имеется второй контроллер прерываний |
7 | Для работы с диском BIOS использует канал 3 контроллера прямого доступа к памяти |
Программа установки программного обеспечения может прочитать эти поля и записать их в зашифрованном виде, например, в один из файлов защищаемого программного пакета.