Студопедия — Защита сегментов кода
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Защита сегментов кода






Межсегментная передача управления происходит по командам jmp, call, ret, int, iret. Для передачи управления существуют жесткие ограничения: передавать управление в общем случае можно только в пределах своего уровня привилегий, т. е. DPL целевого дескриптора должен быть точно равен CPL (см. рис. 7.8).

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

(Страница189)

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

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

При использовании подчиненных сегментов сохраняется одно ограничение — значение DPL дескриптора подчиненного сегмента всегда должно быть меньше или равно текущему значению CPL. Другими словами, передача управления подчиненному сегменту разрешается только во внутренние, более защищенные сегменты. Если бы это ограничение нарушалось, то возврат в вызывающую программу был бы вызовом неподчиненного более защищенного сегмента, что никогда не разрешено.

Наличие подчиненных сегментов кода обеспечивает некоторую свободу передачи управления между уровнями привилегий. Для реализации фактического изменения уровня привилегий привлекаются особые системные объекты, называемые шлюзами вызова (рис. 7.9).

Рис. 7.9. Шлюз вызова

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

При этом, если вызываемая программа имеет более высокий уровень привилегий, чем текущая, то для нее по команде call создается новый стек, позиция которого определяется из сегмента состояния задачи TSS. В этот стек последовательно записываются: старые значения SS и ESP, параметры, переносимые из старого стека, старые CS и EIP. По команде ret происходит возврат к старому стеку.

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

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







Дата добавления: 2015-04-16; просмотров: 694. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

Основные разделы работы участкового врача-педиатра Ведущей фигурой в организации внебольничной помощи детям является участковый врач-педиатр детской городской поликлиники...

Ученые, внесшие большой вклад в развитие науки биологии Краткая история развития биологии. Чарльз Дарвин (1809 -1882)- основной труд « О происхождении видов путем естественного отбора или Сохранение благоприятствующих пород в борьбе за жизнь»...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия