Информация об изменениях

Сообщение Re[4]: Мультипроцессный защищенный код от 06.04.2018 11:09

Изменено 06.04.2018 11:10 Barbar1an

Re[4]: Мультипроцессный защищенный код
Здравствуйте, ononim, Вы писали:

B>>так а можно сделать, чтобы клиентский код не мог писать в общий хип напрямую, а только вызывая апи сервиса? но мог читать, т.е. мог разыменовывать указатели из общего хипа

B>>тогда нужно будет лишь хорошо проверять входные параметры и всё
O>Не очень понял. Если имеется ввиду можно ли сделать хип read-only для непривелигированных процессов — то, конечно, можно. Более того, в винде такое юзается: user32 мапит кусочек session-space в readonly для всех процессов — там есть т.н. desktop и shared heap — они отображаются на юзермода как read-only страницы. Это позволяет обойтись без перехода в кернелмод для многих функций, не требующих изменения состояния, типа IsWindow, WindowFromPoint etc.

я имею ввиду иметь два сегмента юзеркода в одном процессе но у которых разные права на общий сегмент данных

т.е.
код сервиса находится в юзермоде в страницах которые могут писать в общий сегмент данных
код клиента находится в юзермоде в страницах которой НЕ могут прямо писать в общий сегмент данных, но могут вызывать код сервиса

такое реально? можно ли настроить разный доступ к одному сегменту с данными двум разным сегментам кода?
и всё — в юзер моде, потому что сервису нужны разные юзер апи
Re[4]: Мультипроцессный защищенный код
Здравствуйте, ononim, Вы писали:

B>>так а можно сделать, чтобы клиентский код не мог писать в общий хип напрямую, а только вызывая апи сервиса? но мог читать, т.е. мог разыменовывать указатели из общего хипа

B>>тогда нужно будет лишь хорошо проверять входные параметры и всё
O>Не очень понял. Если имеется ввиду можно ли сделать хип read-only для непривелигированных процессов — то, конечно, можно. Более того, в винде такое юзается: user32 мапит кусочек session-space в readonly для всех процессов — там есть т.н. desktop и shared heap — они отображаются на юзермода как read-only страницы. Это позволяет обойтись без перехода в кернелмод для многих функций, не требующих изменения состояния, типа IsWindow, WindowFromPoint etc.

я имею ввиду иметь два сегмента юзеркода в одном процессе но у которых разные права на общий сегмент данных

т.е.
код сервиса находится в юзермоде в страницах из которых могут писать в общий сегмент данных
код клиента находится в юзермоде в страницах из которых НЕЛЬЗЯ прямо писать в общий сегмент данных, но можно вызывать код сервиса

такое реально? можно ли настроить разный доступ к одному сегменту с данными двум разным сегментам кода?
и всё — в юзер моде, потому что сервису нужны разные юзер апи