Ответы с форумов MSDN

Windows - Выполнение кода в другом процессе

Date: 13.04.2018 6:25:52

Именно для обеспечения возможности разработки этого "специализированного ПО". Процессы по умолчанию полностью изолированы друг от друга. Если бы ОС не предоставляла специальные механизмы для получения доступа из одного процесса к другому, создание отладчиков было бы невозможно. В Windows есть несколько механизмов, которые приводят к выполнению кода в чужом процессе:

CreateRemoteThread - существует специально для обеспечения работы отладчиков

SetWindowsHookEx - главным образом для отслеживания отправляемых сообщений (тоже, в каком-то смысле, средство отладки). Также устаревший механизм создания глобальных горячих клавиш до появления функции RegisterHotKey в Windows Vista.

RtlRemoteCall - здесь все менее понятно, скорее всего устаревший механизм взаимодействия между процессами, так или иначе с 64-битными процессами он вообще не работает

Наличие таких механизмов само по себе не создает угрозы, так как пользователь без прав администратора все равно  может получить доступ только к своим процессам. Кроме того, для программ, работающих с секретными данными, есть механизм защищенных процессов, к которым можно получить доступ только из другого защищенного процесса. Например, Multimedia Foundation работает в защищенном процессе, для обеспечения защиты музыки и видеозаписей с авторскими правами (DRM).

Message 487

Date: 13.04.2018 9:04:22

Наверное, потому что это сильно усложнило бы жизнь тем кто занимается разработкой и администрированием, так как они хотят иметь возможность создавать свои отладочные утилиты под конкретные нужды, а не только использовать узкий набор одобренных программ. Да и для домашних пользователей было бы не удобно, так как затруднило бы использование читов к играм, кряков и т.п., которые тоже используют эту функциональность.

Считается, что права администратора должны давать полный контроль над системой, чтобы давать возможность быстро устранять возникающие проблемы. При обычной работе должны использоваться учетные записи простых пользователей, которые имеют доступ только к своим процессам + можно ограничить для них  запускаемые программы через SRP. Для драйверов, которые имеют доступ ко всему, уже сейчас сделана обязательная цифровая подпись. Обычно этих мер достаточно.


Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub