...
Утилита CodeObfuscator.exeЛексическая
обфускация не применяется к следующим артефактам (т.е., они не переименовываютсяОграничения на символьную (лексическую) обфускацию (переименовывание):
- Типы (классы):
- Системный тип "<Module>"
1.2. Типы с атрибутом- и имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
1.3. Типы с флагом IsSerializable,
1.4. Типы, реализующие (наследующие лично или через базовые типы) интерфейс- унаследованные от (реализующие) System.Xml.Serialization.
- Методы:
2.2. Поля с атрибутом- Имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
3.1. Констукторы,
3.2. Виртуальные методы,
3.3. Методы, обращающиеся- Констукторы и деструкторы
- Виртуальные методы
- Обращающиеся к нативному коду с
- использованием конструкции P/Invoke
- Методы с атрибутом System.Runtime.CompilerServices.CompilerGeneratedAttribute
- Обобщенные (шаблонные) методы
// ### деструкторы - есть такое?!- (дженерики)
- Свойства (поля с геттерами и сеттерами):
4.1. Свойства с атрибутом- имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
4.2. Свойства типа, унаследованного от системного типа- реализованные в пользовательском классе, унаследованном от System.Configuration.ApplicationSettingsBase
- Поля:
- Имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute.
Примечание: не гарантируется поддержка сборок с Reflection API и GUI-фреймворков, реализующих MVVM (в частности, WPF и AvaloniaUI).
Утилита CodeProtect.exe
Ограничения на защиту функцийметодов:
1. Метод не имеет тела (в принципе, можно не указывать - и так очевидно)
2. Метод принадлежит структуре (а не обычному классу)
3. Метод - конструктор
4. Метод - шаблонный (использует дженерики)
5. Метод помечен кастомными атрибутами
6. Тело метода содержит инструкцию calli (см. https://docs.microsoft.com/ru-ru/dotnet/api/system.reflection.emit.opcodes.calli) (редкий случай, но возможный)
7. Метод - деструктор или вызывается (прямо или косвенно) из деструктора
8. Метод имеет обработчик исключения вида Fault или Filter; в C# встречается только Filter (использует нотацию с применением when) (см. https://csharp.today/c-6-features-exception-filters/)
- Методы структур
- Конструкторы и деструкторы, а также методы, вызываемые (прямо или косвенно) из деструкторов
- Обобщенные (шаблонные) методы (дженерики) и методы обобщенных (шаблонных) классов (дженериков)
- Методы, имеющие обработчики исключений типов Filter (с использованием ключевого слова when в выражении catch) и Fault (не встречается в C#)
- Методы, включающие инструкцию Calli (обращающиеся к нативным unmanaged функциям и методам)
- Методы, помеченные с применением кастомных атрибутов
- Методы, не имеющие тела.