MSDN.WhiteKnight - Stack Overflow answers
Ответ на "C# Защита памяти в Assembly.Load()"
Answer 913477
Механизма защиты отдельной управляемой сборки в .NET не существует. В Windows, однако, существуют другие механизмы защиты памяти.
Начиная с Windows 10, Trusted execution позволяет создавать изолированные области памяти, так что доступ к данным в такой области может быть получен только кодом, загруженным в эту же область. Требует аппаратной поддержки со стороны процессора (например, Intel Software Guard Extensions).
Для антивирусных приложений, начиная с Windows 8.1 существует механизм защищенных сервисов, который ограничивает доступ к памяти целого процесса. Любые модули, загружаемые в защищенный сервис, должны быть подписаны специальным сертификатом.
Приложения для обработки звука или видео, начиная с Windows Vista, могут использовать Windows Media Foundation, который в целях защиты авторских прав также предоставляет похожий функционал (см. Protected Media Path)
Когда вышеперечисленное не применимо, приложение может попытаться защитится теми же методами, которыми действует вредоносное ПО: инжекция DLL в во все процессы и перехват вызовов функций работы с памятью (ReadProcessMemory и др.). Антивирусы в старых версиях Windows действуют именно так. Однако, этот метод очень ненадежен, ведь если в системе две программы пытаются применить его одновременно, они входят в конфликт и результат непредсказуем.
В общем, если вам нужна реальная защита, как минимум нужно переходить к использованию неуправляемого кода. Также, можно всегда вынести критичный код в удаленный сервис (думаю, это единственный реальный способ защиты, когда секретным является сам код).
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.