Обфускатор .NET онлайн

Защитите .NET-сборку от реверс-инжиниринга — бесплатно, в браузере, примерно за минуту. Загрузите DLL или EXE и скачайте копию, которая работает точно так же, но с запутанным содержимым.

Зачем обфусцировать .NET-код

Языки .NET — C#, VB.NET, F# — компилируются не в непрозрачный машинный код, а в IL (промежуточный язык) вместе с полными метаданными: именами всех пространств имён, типов, методов, свойств и полей. Именно поэтому декомпилятор вроде ILSpy, dnSpy или dotPeek восстанавливает из готовой сборки почти исходный код на C# — без комментариев, но с сохранёнными именами, структурой и логикой. Любой, кому вы передали .dll или .exe, может его прочитать.

Обфускатор переписывает сборку так, чтобы результат декомпиляции перестал быть подарком. Как минимум он переименовывает все символы в бессмысленные знаки; более глубокие слои шифруют строки и перестраивают поток управления. Программа при этом работает точно так же — обфускация меняет то, как код читается, а не то, что он делает.

Как обфусцировать сборку .NET

  1. Соберите проект в конфигурации Release, чтобы защитить именно ту сборку, которую вы поставляете.
  2. Найдите результат сборки — bin/Release/net8.0/YourApp.dll (или .exe).
  3. Загрузите файл на главной странице. Ничего не пишется на диск: файл обрабатывается в памяти и сразу возвращается обратно.
  4. Скачайте YourApp.obfuscated.dll — отдельное имя, чтобы не перезаписать оригинал, — и прогоните тесты перед выпуском.

Без установки, без файлов конфигурации, без шага в сборочном конвейере. Интерфейс инструмента на английском, но сама обфускация от языка интерфейса не зависит. Для сборки из CI есть HTTP API.

Уровни защиты

  • Переименование символов (бесплатно). Убирает читаемую «карту» кода — самый ценный слой. Приватные и внутренние члены переименовываются всегда; у приложения переименовывается и публичная поверхность, а у библиотеки публичный API сохраняется, чтобы вызывающий код продолжал работать.
  • Блокировка ILDasm (бесплатно). Помечает сборку так, что дизассемблер ILDasm от Microsoft отказывается её открывать.
  • Шифрование строк (Pro). Строковые литералы по умолчанию видны в декомпиляторе; шифрование хранит их зашифрованными и расшифровывает во время выполнения.
  • Обфускация потока управления (Pro). Переписывает методы в эквивалентную, но запутанную форму, чтобы результат декомпиляции не читался как аккуратный код.
  • Проксирование вызовов (Pro). Прячет прямой граф вызовов к методам фреймворка и библиотек.
  • Виртуализация методов (Pro). Самый сильный слой: выбранные методы превращаются в байткод для небольшого интерпретатора внутри сборки, и декомпилятор видит интерпретатор, а не ваш алгоритм.

Что обфускация защищает, а что нет

Честно о границах: обфускация повышает стоимость реверс-инжиниринга, но не делает код невозможным для понимания и не заменяет то, за что её часто принимают.

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

Частые вопросы

Есть ли бесплатный онлайн-обфускатор .NET?

Да — этот. Он переименовывает символы в браузере без регистрации. Более глубокие слои защиты доступны на тарифе Pro.

Работает ли это для C#?

Да. C# компилируется в .NET-сборку, поэтому обфусцируется так же, как VB.NET и F#. Подробнее — в англоязычном обзоре .NET obfuscator.

Подробное руководство и сравнения доступны на английском: .NET obfuscator · сравнения инструментов.