Привет !
К писателям под Линукс и Админам вопрос.
Вот ниже три куска из одной переписки.
Хочется комментариев от "практических специалистов".
кусок 1...............
...
Есть такая таблица- GDT - которая и распределяет все привелегии.
Линуховоды считают что она дана богом. Как есть.
А обычные системщики знают, что эта таблица создается необычной для линуха програмкой.
Необычной в том смысле, что она на ассемблере. И создается она когда нет
никаких пользоваттелей и рутов. Сам процессор ее и создает.
Если внимательно почитать тот код с wasm.ru то там как раз и показано,
что проц может создать сам себе таблицу GDT, назначить себе права и делать все что угодно.
Только после этого можно лезть читать секторы и биосы.
Непонимание этого момента приводит вот к таким результатам.
................................
Кусок 2....................
...
Как известно в процессоре каждый сегментный регистр имеет скрытые или
теневые (shadow parts) части в которых в защищенном режиме кэшируется
дескриптор сегмента, для программиста они невидимы. В защищенном
режиме эти части обновляются всякий раз когда в сегментный регистр
загружается новое значение, в реальном же режиме обновляются только
поля базового адреса сегмента. Если в защищенном режиме создать
сегмент с лимитом в 4Гб и загрузить в сегментный регистр такой
селектор, после чего переключиться в реальный режим, и, не следуя
рекомендациям интел, оставить предел равным 4Гб – значение лимита
сегмента сохранится позволяя использовать 32-битные смещения.
Алгоритм перехода в нереальный режим:
Создать дескриптор с базой равной 0
Установить предел сегмента в 4Гб
Переключиться в защищенный режим
Загрузить селектор сегмента в какой-либо сегментный регистр
Переключиться в реальный режим
После этих действий можно в реальном режиме использовать конструкции типа:
мov ax,word ptr fs:[edx
...........................................
Кусок 3.................
...
Когда ядро запускает процесс, оно контролирует его полностью.
Шаг влево-шаг вправо- побег , расстрел на меcте.
Поэтому делают по другому. Этот процесс должен породить дочерний-
его система уже не контролирует, только знает о нем и контролировать его должен родитель.
А дочерний процесс порождает внучатый- про него уже и система не знает ничего.
После этого дочерний должен убить папу, убиться сам, и остается внучок- демон, про который система не знает и не контролирует-
вот он уже может делать что хочет.
Даже весь линух можно прибить, а он останется в памяти работать. пока питание есть.
..................
--
Best regards,
Alexander V Soroka http://www.svr.ua/
AS106-RIPE
mailto:alex@euro.net.ua