Во, блин! Аж из 3-го!
Не знаю, но вот что мне интересно: а как получить под Линухом
привелегии 3-го кольца?
Мне почем-то кажется, что и в Линухе, и в Нте, задействованы
только 2 кольца: 0, в котором ядро, и 5, которое userspace.
Или я не прав? Очень прошу просветить...
2tvn (*) (2001-11-05 21:11:02.0):
А сколько в Интеле колец? Всего 4? AFAIK userspace=старшее кольцо.
И что такое "получить Ring 0 через INT"?
Естественно, системные вызовы делаются через INT, и после любого системного
вызова процесс оказывается в кернел-моде, т.е. в кольце 0. Но это ж не значит,
что я могу написать процедуру, установить, как в ДОСе, вектор прерывания на нее
и позвать INT, чтобы ее выполнить в kernel space?
Ну, интересно, а В ПРИНЦИПЕ возможно в защищенном режиме урвать привилегии
0 кольца из старшего? Конечно, можно написать модуль, который после сисколла
подзагрузит в кернел-спейс процедурину из юзер-спейса, и передаст ей управление,
но это будем считать "грязным хаком" системы. А как насчет експлойтов,
или подобные штуки можно проделать регулярным образом (типа, "зарядить"
вектор прерывания, написав из-под рута прямо в виртуальную память через
файловый девайс)?
Или так:
пишем в /dev/kmem нечто, соответствующее "грязному хаку", после чего зовем сисколл,
который вообще переводит процессор в реальный режим. Такое возможно?
Насчёт INT'a: AFAIK в Виндюшках можно модифицировать IDT (она не защищена, можно читать-писАть), а в Линюхе вот затруднительно (именно из-за заSHIt'ы)(всё из кольца 3). Может, сущ-ет способ переустановки INT'a как в ДОСе, о котором я не знаю???
Что за "ядрёный модуль"? ОС УЖЕ ЗАПУЩЕНА!
По аналогии со знакомой мне Виндюхой (где есть VxD) - есть ли нечто kernel-mode'ное, динамически загружаемое? Заранее извиняюсь за возможное ламерство.
"Грязный хак"... без него ничего гикогда не получится, арх. Интеловских процов не предусматривает (в идее) AFAIK процедуре на 3м кольце работать на 0м.
А насчёт модуля, который будет грузить из юзерспейса в ядро - от УЖЕ должен иметь привилегии Ring0. Или я что-то не понимаю?
Кстати - имеется в виду именно ДИНАМИЧЕСКАЯ загрузка - то есть программа, работающая на 3м кольце, выполняет некоторую (произвольную) процедуру с привилегиями 0. И никакого перевода в реальный режим не предусматривается.