Какая из этого практическая польза?
2 июля 2015 г., 13:41 пользователь Alexander V Soroka
Привет !
К писателям под Линукс и Админам вопрос.
Вот ниже три куска из одной переписки.
Хочется комментариев от "практических специалистов".
кусок 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