Рекомендации по защите .NET-приложений
Утилита CodeObfuscator.exe
Ограничения на символьную (лексическую) обфускацию (переименовывание):
- Типы (классы):
- Системный тип "<Module>" и имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
- унаследованные от (реализующие) System.Xml.Serialization.IXmlSerializalbeAttribute
- Методы:
- Имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
- Констукторы и деструкторы
- Виртуальные методы
- Обращающиеся к нативному коду с использованием конструкции P/Invoke
- Методы с атрибутом System.Runtime.CompilerServices.CompilerGeneratedAttribute
- Обобщенные (шаблонные) методы (дженерики)
- Свойства (поля с геттерами и сеттерами):
- имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
- реализованные в пользовательском классе, унаследованном от System.Configuration.ApplicationSettingsBase
- Поля:
- Имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute.
Примечание: не гарантируется поддержка сборок с Reflection API и GUI-фреймворков, реализующих MVVM (в частности, WPF и AvaloniaUI).
Утилита CodeProtect.exe
Ограничения на защиту методов:
- Методы структур
- Конструкторы и деструкторы, а также методы, вызываемые (прямо или косвенно) из деструкторов
- Обобщенные (шаблонные) методы (дженерики) и методы обобщенных (шаблонных) классов (дженериков)
- Методы, имеющие обработчики исключений типов Filter (с использованием ключевого слова when в выражении catch) и Fault (не встречается в C#)
- Методы, включающие инструкцию Calli (обращающиеся к нативным unmanaged функциям и методам)
- Методы, помеченные с применением кастомных атрибутов
- Методы, не имеющие тела.