|
0 / 0 / 0
Регистрация: 21.05.2020
Сообщений: 1
|
|
Загрузка програм в ОЗП. Защищенный режим21.05.2020, 13:23. Показов 3201. Ответов 21
В защищенном режиме невозможно записывать в сегмент кодов. Как операционные системы загружают програмы в ОЗП?
0
|
|
| 21.05.2020, 13:23 | |
|
Ответы с готовыми решениями:
21
защищенный режим Защищённый режим |
|
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 854
|
||
| 21.05.2020, 14:21 | ||
|
Не по теме: Надеюсь, ничего не перепутал.
2
|
||
|
Эксперт Hardware
|
||
| 21.05.2020, 19:24 | ||
|
У 64-битных процессоров есть пародия на аппаратный запрет исполнения (но не записи) - это бит[64] под названием "NoExcute" NX в записях таблицы-страниц PTE. Его поддержка включается в биосе, и предотвращает от исполнения данных в стеке - т.н. DEP "Data Execute Protect". Но и этот бит можно программно отключить через VirtualProtect(Ex) или SetProcessDEPPolicy(). Таким образом вся эта защита держится на добром слове..Добавлено через 8 минут Аппаратной защитой от записи в секцию-кода, можно назвать только кэш-инструкций. Но для этого данные уже должны быть в конвейере. Если процессор замечает такую ситуацию, то выгружает всю исполняемую линейку из L1 в L3, и опять загружает её чуть-позже. При определённых обстоятельствах это не убережёт от записи, хотя задержит её на некоторое время или поместит в мёртвый цикл.
3
|
||
|
Эксперт Hardware
|
||||||
| 28.05.2020, 18:59 | ||||||
|
Флаги в дескрипторах - это вообще никому не нужный аппендикс.
Сегмент состоит из набора (Set) страниц вирт.памяти, на уровне которых и предпринимаются попытки защиты. К примеру на уровне дескрипторов нет флагов, которые определяли-бы секцию кода. Это давно известный факт и 11-ый бит там вообще не играет никакой роли. В дескрипторах фигурируют только биты R и W. Даже бит "Expand-Down" можно отправить в утиль, и стек будет сам расти в обратном направлении глядя на пару ss:esp.Если секция доступна на запись (взведён бит-W), то она автомат превращается в исполняемую. Именно поэтому хоть и с опозданием, мелкософт ввёл технологию DEP на уровне страниц. Попробуй поместить любой код в секцию-данных (она открыта на запись) и этот код прекрасно отработает, хотя дескриптор у неё не кодовый.
2
|
||||||
|
Эксперт Hardware
|
||||||
| 31.05.2020, 09:22 | ||||||
|
Бывает нужно получить таблицу-дескрипторов GDT/LDT..
Есть инструкция sgdt, но она возвращает только адрес и размер этой таблицы в системной памяти, но не её содержимое. Чтобы под юзером прочитать значения самих 8-байтных дескрипторов для каждого из сегментных регистров, можно воспользоваться функций GetThreadSelectorEntry() из kernel32.dll. В одном из аргументов она ждёт хэндл потока, который можно получить чз. GetCurrentThread() - вот пример:
Как видим стек - это обычная секция-данных, даже без бита "Expand-Down". Назад адрес считает сам регистр ESP на аппаратном уровне. Так-что все/эти биты только для отвода глаз, хотя R/W и DPL (во-флагах) функционируют как и задумано - DPL следит от куда поступает запрос, а RW предотвращает запись.
1
|
||||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||
| 31.05.2020, 11:36 | ||||
1
|
||||
|
Эксперт Hardware
|
|||||||
| 31.05.2020, 14:02 | |||||||
|
Например мы-же сами создаём дескрипторы, когда переходим в защищённый режим. Соответственно если взвести в нём бит W, то и исключения #GP уже не получим при записи. Если-бы в поле "Type" вообще-бы не было битов RW, а только Execute (при этом процессор сам запрещал-бы в неё запись), то это была-бы уже аппаратная защита.Добавлено через 22 минуты ещё тестовый вариант.. если дополнить прожку выше попыткой записи в код, то получаем #GP. но если раскомментировать атрибут writable, то исключения уже нет и запись происходит нормально. дескриптор секции-кода остаётся такой-же.. типа 0хВ.значит вся защита организована на уровне страниц, а не дескрипторов.. и защита эта программная, а не аппаратная:
2
|
|||||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
||
| 31.05.2020, 16:27 | ||
![]() Ну тогда я бы назвал её не программной, а программируемой, т.к. процессор всё же сам защищает этот участок памяти, аппаратно. ИМХО, программная – это защита памяти в виртуальных машинах (JVM и пр), когда интерпретатор блокирует запуск команд, которые пытаются произвести запись туда, куда не стоит.
1
|
||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
| 31.05.2020, 22:14 | |
|
R71MT, Jin X,
![]() Но Вы устроили междусобуйчик, познавательный, но ТС, задал вопрос и упал в осадок. Он "захлебнулся" на 3-4 посте. ФедосеевПавел, создайте отдельную фиксированную тему этого раздела. Режимов работы CPU никто не знает. Мои эксперементы закончились переустановкой ОСи(пару раз, не смотря на то, что работал с флопа).
1
|
|
|
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 854
|
||||
| 01.06.2020, 07:30 | ||||
|
Тот факт, что Microsoft отключает большую часть защиты на уровне сегментов, предоставляя приложениям селекторы дескрипторов для кода, данных и стека с базой 0 и лимитом 4GB (речь про 32-х битные приложения), не даёт право утверждать, что такой защиты нет в принципе.
1
|
||||
|
Эксперт Hardware
|
|||||||||
| 01.06.2020, 09:11 | |||||||||
|
а не селекторе, базе и лимите - причём это тут, или где-то утверждалось обратное? И инструкции FAR нет под виндой, т.к. ближний или дальний переход определяет лимит в дескрипторе, а он выставлен на максимум 4Gb. Дескриптор определяет, страницы с какими атрибутами нужно выделять системе под данную секцию, и всё.
0
|
|||||||||
|
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 854
|
||||||||||||||
| 01.06.2020, 09:36 | ||||||||||||||
0
|
||||||||||||||
|
Эксперт Hardware
|
|||
| 01.06.2020, 11:22 | |||
|
это было актуально для доса, с его лимитом в дескрипторах 64К.
0
|
|||
|
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 854
|
|
| 01.06.2020, 16:30 | |
|
0
|
|
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||||||||||||||
| 01.06.2020, 19:39 | |||||||||||||||
![]() jmp far и call far нет только в 64 битах, а вот retf даже в x64 работает.К примеру:
0
|
|||||||||||||||
|
Эксперт Hardware
|
||
| 01.06.2020, 20:30 | ||
|
Во-вторых убери пуши сегментных регистров и сделай обычный ret - всё будет работать так-же. Тогда зачем эти выкрутасы? Имхо только чтобы показать свою некомпетентность в данном вопросе. Фар - это дальний переход, а под виндой с её 4Gb лимитом дальше уже некуда, поэтому и связка push cs/retf здесь не только бесполезна, но и противопоказана.
0
|
||
| 01.06.2020, 21:06 | |||||||
0
|
|||||||
| 01.06.2020, 21:06 | |
|
Помогаю со студенческими работами здесь
20
защищенный режим защищенный режим Защищенный режим Переход в защищенный режим Защищенный режим asm Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|