Вопрос № 101385: Уважаемые эксперты! Может быть я не в ту рассулку адресую свои вопрсы, но наверное они ближе всего подходят к ассемблеру. У меня 2 вопроса. При установке отладчика встретилась фраза "Айс сидит в нулевом кольце защиты, принтскрин в третьем.."...
Вопрос № 101.385
Уважаемые эксперты! Может быть я не в ту рассулку адресую свои вопрсы, но наверное они ближе всего подходят к ассемблеру. У меня 2 вопроса. При установке отладчика встретилась фраза "Айс сидит в нулевом кольце защиты, принтскрин в третьем.." 1. AFD так понимаю тоже. А OLLY? 2. Чем занимаются 1 и 2 кольца защиты? С уважением к Вам.
Отправлен: 09.09.2007, 13:05
Вопрос задал: Tiratron (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Egugondiy
Здравствуйте, Tiratron! Интел-совместимые процессоры поддерживают четыре уровня привилегий. Ring-0,Ring-1,Ring-2 и Ring-3.
Нулевой уровень дает процессу абсолютную свободу, а третий
накладывает множество ограничений. В операционных системах Windows реализовано два уровня привилегий: Ring-0 и Ring-3. Нулевое кольцо также называют уровень ядра. В этом уровне работают некоторые системные службы и драйвера устройств.
Большинство пользовательских приложений не выходят за пределы Ring-3. Они не могут использовать привилегированые команды процессора, работать напрямую с портами ввода/вывода,
обращатся к некоторым областям памяти, работать напрямую с физическими устройствами и т.п.
Что касается отладчиков, то имелось ввиду, что SoftIce может отлаживать процессы уровня ядра. AFD насколько я знаю предназначен для работы в MS-DOS. OLLY это отладчик уровня пользователя.
Ответ отправил: Egugondiy (статус: 1-ый класс)
Ответ отправлен: 09.09.2007, 15:52 Оценка за ответ: 4 Комментарий оценки: Вы немного упустили часть вопроса, а именно, чем занимаются 1 и 2 кольца защиты. Будьте пожалуйста внимательны.
Отвечает: Irina Surina
Здравствуйте, Tiratron!
0 - ое кольцо - ядро системы. Драйверы и службы, загружаемые однократно вместе с ситемой (напр. vxd). 1-ое, 2-ое кольца - подгружаемые драйверы (sys, wdm (частично)), во 2 -ом кольце - dll. 3-ье кольцо - приложения. Существуют запреты на обращение через уровень. Напишите конкретнее, какая у Вас проблема
Ответ отправила: Irina Surina (статус: 1-ый класс)
Ответ отправлен: 09.09.2007, 17:45 Оценка за ответ: 5 Комментарий оценки: Спасибо, что откликнулись. Затруднения вызваны изменением шрифта в отладчике, от мелкого шрифта очень болят глаза, эксперты не стали давать ответа на этот вопрос. Остальное обсуждать здесь я не имею права.
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Tiratron!
С появлением CPU i286-го введен в защищенный режим(Protection Mode). В отличии от реального режима (Real Mode), сегментные регистры PM содержат не адреса, а селекторы. 16-битный селектор(определяющий сегмент) и 32-битное (16-битное) смещение указывают на линейный адрес. Отдельный сегмент памяти — это независимое защищенное адресное пространство, для которого определены размер, разрешенные способы доступа (чтение / запись / исполнение кода) и уровень привилегий. Теперь о селекторе и дескрипторе. Селектор содержит: биты 0:1- запрошенный программой уровень привелегий;
бит 2 определяет таблицу дескрипторов(0-глобальная, 1-локальная);
биты 3:15- индекс дескриптора в таблице.
Взависимости от бита 2 селектора индекс дескриптора будет искатся в GDT (Global Descriptor Table-глобальная таблица) или LDT (Local Descriptor Table-локальная таблица). Дескриптор :- это 64-битная (8 байт) структура которая может описывать сегмент кода, сегмент данных, сегмент состояния, шлюз вызова, ловушки, прерывания или задачи. слово 3 (старшее):биты 15 – 8: биты 31 – 24 базы
бит 7: бит гранулярности (0 — лимит в байтах, 1 — лимит в 4-килобайтных единицах);
бит 6: бит разрядности (0/1 — 16-битный/32-битный сегмент);
бит 5: 0;
бит 4: зарезервировано для операционной системы;
биты 3 – 0: биты 19 – 16 лимита; слово 2:бит 15: бит присутствия сегмента;
биты 14 – 13: уровень привилегий дескриптора (DPL);
бит 12: тип дескриптора (0 — системный, 1 — обычный);
биты 11 – 8: тип сегмента;
биты 7 – 0: биты 23 – 16 базы; слово 1: биты 15 – 0 базы; слово 0(младшее): биты 15 – 0 лимита.
где:
База представляет линейный 32-битный адрес начала сегмента,
лимит — это 20-битное число, которое равно размеру сегмента в байтах,
нас интересует слово 2:биты 13 - 14 -как Вы заметили в них можно записать 4-е значения: 00,01,10,11 -что соответствует "кольцам", 00-"кольцо" ядра(максимальные привилегии), 11- "кольцо" пользователя(минимальные привелегии). Из-за появилось 4-е "кольца" привилегий.
Самое интересное: с появлением CPU i386- вводится страничная адресация, в которой есть только два уровня привелегий ядро + драйвера(биты 13:14=00), и всё остальное( в том числе и пользователь, биты 13:14=11).
В приложениии значения битов 11 – 8: тип сегмента если бит 12: тип дескриптора (0 — системный).
ps:кратко весь механизм описать невозможно.
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 10.09.2007, 21:38 Оценка за ответ: 5 Комментарий оценки: Спасибо большое за подробный и обстоятельный ответ.