Защита приложений на .NET

Защита приложений на .NET

Автор: Gamania

Дата публикации: 09.11.2025

Погружение в тему защиты ПО на базе архитектуры .NET: способы защиты, взлома.

Пост в процессе написания!

Интро

Сегодня мы с вами разберём ситуации с защитой ПО на архитектуре .NET

На данный момент времени (2025.11.09) в мире экосистемы .NET есть прежняя проблема - это возможность прямой дизассемблеризации машинного кода бинарника до уровня исходного кода* (с учётом некоторых ограничений)

С этой проблемой сталкиваются многие разработчики, которые выводят .NET проект в публичную среду и имеют коммерческие отношения. И зачастую проблема затрагивает среду лицензирования ПО, иногда бывают кейсы с защитой интеллектуальной собственности (кода) от просмотра/модификации.

Собственно возникает вопрос: Раз .NET "дырявый" - как победить данную проблему? И тут вступают разные процессы защиты ПО от вскрытия и модификации:

  1. Обфускаторы кода
  2. Кастомные сборки .NET (dotnet publish с модифицированной средой .NET)
  3. Виртуализаторы кода (ВМ для IL опкодов)
  4. Рекомпиляторы .NET (IL стэк) в машинный код (X32/64, Arm64) (AOT компилятор (Раннее известный как Mono AOT), il2cpp)

Давайте рассмотрим в теории как работают данные процессы:

1. Обфускация кода

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

Пример обфускации кода До:

using System;

После:

А теперь рассмотрим плюсы данного решения:

  1. Гарантия работы - изменения вкладываются ещё на этапе исходного кода, который пройдет все этапы компиляции, которые включают в себя различные этапы проверки кода. Таким образом скомпилированный бинарник гарантированно будет работать.
  2. Простота использования - Не нужно иметь знания в использовании данного процесса: Подключил и используй.

Ну теперь к минусам:

  1. Нестойкая защита - Этот процесс лишь усложнит работу над реверс инженерии. Если использовать публичный обфускатор - то высок шанс того, что его можно ДЕобфусцировать через например популярную утилиту de4dot и её многочисленных форков, комьюнити которое адаптирует его под определённые сценарий использования.
ПлюсыМинусы
Гарантия работыНестойкая защита
Простота использования