Операционная система MS DOS (том 2)



         

Ограничение доступа при загрузке MS-DOS - часть 3


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

Приведем пример такого драйвера. Вы можете записать его на диск С: и первой строкой в файле CONFIG.SYS записать:

device=c:\stop.sys

Для продолжения загрузки введите пароль sys.

.MODEL tiny .CODE ; Драйвер состоит из одного ; сегмента кода

org 0 ; Эта строка может отсутствовать

include sysp.inc

;=========================================================== stop PROC far ;драйвер - это FAR-процедура ;===========================================================

E_O_P: ;Метка конца программы, ;устанавливаем ее в начало ;драйвера, т.к. нам не надо ;оставлять драйвер резидентно ;в памяти

; Заголовок драйвера

dd 0ffffffffh ;адрес следующего драйвера dw 8000h ;байт атрибутов dw dev_strategy ;адрес процедуры стратегии dw dev_interrupt ;адрес процедуры прерывания db 'STOP ' ;имя устройства (дополненное пробелами)

;=========================================================== ; Программа стратегии

dev_strategy: mov cs:req_seg,es mov cs:req_off,bx ret

; Здесь запоминается адрес заголовка запроса

req_seg dw ? req_off dw ?

;=========================================================== ;Обработчик прерывания

dev_interrupt: push es ;сохраняем регистры push ds push ax push bx push cx push dx push si push di push bp

; Устанавливаем ES:BX на заголовок запроса

mov ax,cs:req_seg mov es,ax mov bx,cs:req_off

; Получаем код команды из заголовка запроса и умножаем ; его на два, чтобы использовать в качестве индекса ; таблицы адресов обработчиков команд

mov al,es:[bx]+2 shl al,1

sub ah,ah ; Обнуляем AH lea di,functions ; DI указывает на смещение таблицы add di,ax ; Добавляем смещение в таблице jmp word ptr [di] ; Переходим на адрес из таблицы




Содержание  Назад  Вперед