Обфускатор .NET онлайн
Защитите .NET-сборку от реверс-инжиниринга — бесплатно, в браузере, примерно за минуту. Загрузите DLL или EXE и скачайте копию, которая работает точно так же, но с запутанным содержимым.
Зачем обфусцировать .NET-код
Языки .NET — C#, VB.NET, F# — компилируются не в непрозрачный машинный код, а в
IL (промежуточный язык) вместе с полными метаданными: именами
всех пространств имён, типов, методов, свойств и полей. Именно поэтому декомпилятор вроде
ILSpy, dnSpy или dotPeek восстанавливает из
готовой сборки почти исходный код на C# — без комментариев, но с сохранёнными именами,
структурой и логикой. Любой, кому вы передали .dll или .exe, может его
прочитать.
Обфускатор переписывает сборку так, чтобы результат декомпиляции перестал быть подарком. Как минимум он переименовывает все символы в бессмысленные знаки; более глубокие слои шифруют строки и перестраивают поток управления. Программа при этом работает точно так же — обфускация меняет то, как код читается, а не то, что он делает.
Как обфусцировать сборку .NET
- Соберите проект в конфигурации Release, чтобы защитить именно ту сборку, которую вы поставляете.
- Найдите результат сборки —
bin/Release/net8.0/YourApp.dll(или.exe). - Загрузите файл на главной странице. Ничего не пишется на диск: файл обрабатывается в памяти и сразу возвращается обратно.
- Скачайте
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 · сравнения инструментов.