none
Зачем нужен инжект кода???

    Вопрос

  • Подскажите, а зачем вообще во многих Ос реализуется механизм инжекта кода в чужой процесс? Кроме как нарушения безопасности какой еще в нем смысл? Обновлять ПО можно просто заменой версий библиотек, а отладку производить в специализированном ПО.
    13 апреля 2018 г. 5:29

Все ответы

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

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

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

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

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

    13 апреля 2018 г. 6:25
  • Спасибо за отличный ответ! Но почему нельзя повесить сертификаты на отладочное ПО, которые позволят после проверки на подлинность переводить аппаратно ну или программно некий процесс в отладочный режим. А получается с правами администратора все кому не лень могут писать везде и во все процессы не защищенные ядром.
    13 апреля 2018 г. 7:37
  • Наверное, потому что это сильно усложнило бы жизнь тем кто занимается разработкой и администрированием, так как они хотят иметь возможность создавать свои отладочные утилиты под конкретные нужды, а не только использовать узкий набор одобренных программ. Да и для домашних пользователей было бы не удобно, так как затруднило бы использование читов к играм, кряков и т.п., которые тоже используют эту функциональность.

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

    13 апреля 2018 г. 9:04