Защита от декомпиляторов
Защита от декомпиляторов существенно ограничивает возможности восстановления исходного кода приложения на язык ассемблера или языки высокого уровня (C#, VB и т.д.). Для обеспечения защиты от восстановления исходного кода используются следующие методы:
- Внедрение в защищаемое приложение дополнительных методов, обладающих корректной семантикой для языка ассемблера, но не корректной для компиляторов языков высокого уровня, и, соответственно, вызывающие ошибки при восстановлении кода на эти языки.
- Внедрение в защищаемое приложение дополнительных методов, обладающих не корректной семантикой даже для языка ассемблера, и, соответственно, вызывающие ошибки при восстановлении кода на язык ассемблера.
- Внедрение в методы сборки недостижимых в процессе исполнения вызовов функций с некорректным кодом, формирующих скрытые ошибки, проявляющиеся при попытке скомпилировать дизассемблированный код.
- Бинарная обработка сборки для защиты от декомпиляции.
- Внедрение в методы сборки, кода с некорректной для компиляторов языков высокого уровня семантикой (при включенном режиме обфускации "Граф потока управления").
- Преобразование кода методов сборки, в код с некорректной семантикой для языков высокого уровня (при включенном режиме обфускации "Граф потока управления").
Настройка параметров защиты от декомпиляторов
Внешний вид вкладки Защита от декомпиляторов (с пометками)
Опции:
- Разрешить защиту от декомпиляторов - Включение режима защита от декомпиляторов при обфускации;
- Сборка - для которой будут настраиваться опции;
- Уровень защиты - задает уровень защиты при обфускации;

Пример результата обфускации с опцией Защита от декомпиляторов (просмотр осуществляется с использованием утилиты .Net Reflector):
при попытке просмотра содержимого функции, декомпилятор выдает сообщение об ошибке.
Пример результата обфускации с опцией Защита от декомпиляторов (просмотр осуществляется с использованием утилиты Depends):
при попытке экспорта (с дизассемблированием) сборки, декомпилятор выдает сообщение об ошибке.
Результат декомпиляции сборки ClassLibrary1:
System.NullReferenceException: Object reference not set to an instance of an object.
at ᝅ.ᜀ()
at ឺ.ᜀ(IMethodDeclaration A_0, IMethodBody A_1)
at ឤ.ᜀ(IMethodDeclaration A_0)
at ᜭ.ᜁ(IMethodDeclarationCollection A_0)
at ឤ.ᜀ(ITypeDeclaration A_0)
at ឥ.ᜀ(ITypeDeclaration A_0, Boolean A_1, Boolean A_2)
at ប.ᜀ(ITypeDeclaration A_0, String A_1, ILanguageWriterConfiguration A_2)
namespace 儵
{
}