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