Здравствуйте /b/ратья , прошу вашей помощи винде\процессору . Собственно вопрос в следующем чем различаются режимы процессора в привилегированном режиме и в юзермоде ( под винду 98 слышал можно пропатчить контекст потока , а именно регистр cs (сделать его равным 0x28) и передать управление через eip , чтобы попасть в ядро ) . Как вообще происходит адрессация в процессах , а именно как каждый процесс имеет свое адресное пространство не пересекающееся с другим . В чем смысл handle и как вообще идет взаимодействие с объектами через это значение . Буду рад любой помощи , ну или посоветуйте годную литературу , чтобы вкурить это
>>1066956 (OP)> ну или посоветуйте годную литературу , чтобы вкурить этоНу ты это, интеловские мануалы скачай, и все узнаешь. Там в первом томе краткое введение, в System Programming Guide подробно.> Собственно вопрос в следующем чем различаются режимы процессора в привилегированном режиме и в юзермодеУровнем привелегий, больше ничем. Некоторые операции с процессором возможны только в ring0, другие - как настроишь.> Как вообще происходит адрессация в процессахВиртуальный адрес (если включен paging) транслируется в линейный, линейный в физический, физический выставляется на адресную шину. Подробнее в интелоском мануале. Можешь также найти дамп wasm.ru в .chm, там был цикл статей про защищенный режим - все достаточно просто и доступно, если тебе вкатиться, и пока не интересует long mode.> как каждый процесс имеет свое адресное пространство не пересекающееся с другимУ каждого процесса своя таблица страниц, связывающая виртуальный адрес блока виртуальной памяти с каким-то блоком физической памяти. MMU в процессоре обрабатывает эту таблицу и автоматически выполняет трансляцию адресов.> В чем смысл handle и как вообще идет взаимодействие с объектами через это значениеА это тут каким местом? Handle, он же дескриптор - любой непрозрачный идентификатор (т.е., он позволяет идентифицировать объект при вызове функций, но не позволяет тебе узнать, где этот объект находится в памяти и что-то делать с ним напрямую). В 9x это был обфусцированный адрес, в NT - смещение в таблице дескрипторов (т.е., функция API или ядерный сервис знает, где та или иная таблица и по хэндлу получает нормальный указатель на структуру, описывающую объект).
Спасибо , дружище ! Мануал интела я видел , но как-то огромное количество английского меня ,откровенно говоря , испугало т.к. читать англоязычную литературу я умею , но такое огромное количество специализированной литературы в жизни не читал и боюсь бросить ( а это самое обидное ) - может быть есть где-то перевод ? Кстати на васме довольно интересно - спасибо еще раз =)
>>1067078hotyab, wiki poprobui:https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8Chttps://ru.wikipedia.org/wiki/%D0%97%D0%B0%D1%89%D0%B8%D1%82%D0%B0_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%B3%D0%BC%D0%B5%D0%BD%D1%82%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8