Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Утилита CodeObfuscator.exe

Лексическая обфускация не применяется к следующим артефактамОграничения на символьную (лексическую) обфускацию (переименовывание):

  1. Типы (классы):
    1. Системный тип "<Module>"Типы с атрибутом  и имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
    2. Типы с флагом IsSerializable
    3. Типы, реализующие (наследующие лично или через базовые типы) интерфейс унаследованные от (реализующие) System.Xml.Serialization.IXmlSerializable;IXmlSerializalbeAttribute
    Поля
  2. Методы:
    1. Поля с флагом RTSpecialName
    2. Поля с атрибутом Имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
    3. Поля с флагом IsSerializable;
    Методы:
    1. Констукторы и деструкторы
    2. Конструкторы
    3. Виртуальные методы
    4. Методы, обращающиеся Обращающиеся к нативному коду с помощью идиомы использованием конструкции P/Invoke
    5. Методы с атрибутом System.Runtime.CompilerServices.CompilerGeneratedAttribute
    6. Обобщенные (шаблонные) методы ;
      // ### деструкторы - есть такое?!(дженерики)
  3. Свойства (поля с геттерами и сеттерами):
    1. Свойства с атрибутом имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
    2. Свойства типа, унаследованного от системного типа реализованные в пользовательском классе, унаследованном от System.Configuration.ApplicationSettingsBase (для WinForms
  4. Поля:
    1. Имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute.

Примечание: не гарантируется поддержка сборок с Reflection API и GUI-фреймворков, реализующих MVVM (в частности, WPF и AvaloniaUI).


Утилита CodeProtect.exe


Ограничения на защиту функцийметодов:

  1. Методы структур
  2. Конструкторы и деструкторы, а также методы, вызываемые (прямо или косвенно) из деструкторов
  3. Обобщенные (шаблонные) методы (дженерики) и методы обобщенных (шаблонных) классов (дженериков),
  4. Методы, имеющие обработчики исключений типов Filter (с использованием ключевого слова when в выражении catch) и Fault (не встречается в C#),
  5. Методы, включающие инструкцию Calli (обращающиеся к нативным unmanaged функциям и методам),
  6. Методы, помеченные с применением кастомных атрибутов
  7. Методы, не имеющие тела.
  8. Метод не имеет тела (в принципе, можно не указывать - и так очевидно)
  9. Метод принадлежит структуре (а не обычному классу)
  10. Метод - конструктор
  11. Метод - шаблонный (использует дженерики)
  12. Метод помечен кастомными атрибутами
  13. Тело метода содержит инструкцию calli (см. ссылку) (редкий случай, но возможный)
  14. Метод - деструктор или вызывается (прямо или косвенно) из деструктора
  15. Метод имеет обработчик исключения вида Fault или Filter; в C# встречается только Filter (использует нотацию с применением when) (см. ссылку)