Versions Compared

Key

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

...

Утилита CodeObfuscator.exe

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

  1. Типы (классы):

      ...

        1. Системный тип "<Module>"

      ...

        1.  и имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute

      ...

        1. унаследованные от (реализующие) System.Xml.Serialization.

      ...

        1. IXmlSerializalbeAttribute
      1. Методы:
        1. Имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute

      ...

        1. Констукторы и деструкторы
        2. Виртуальные методы
        3. Обращающиеся к нативному коду с

      ...

        1. использованием конструкции P/Invoke

      ...

      ...

        1. Методы с атрибутом System.Runtime.CompilerServices.CompilerGeneratedAttribute

      ...

      ...

        1. Обобщенные (шаблонные) методы

      ...

        1. (дженерики)
      1. Свойства (поля с геттерами и сеттерами):

      ...

        1. имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute

      ...

        1. реализованные в пользовательском классе, унаследованном от System.Configuration.ApplicationSettingsBase
      1. Поля:
        1. Имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute.

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


      Утилита 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/)методов:

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