Versions Compared

Key

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

...

Утилита CodeObfuscator.exeЛексическая

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

  1. Типы (классы):
      1.1.
      1. Системный тип "<Module>"
      ,
      1.2. Типы с атрибутом
      1.  и имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
      ,
      1.3. Типы с флагом IsSerializable,
      1.4. Типы, реализующие (наследующие лично или через базовые типы) интерфейс
      1. унаследованные от (реализующие) System.Xml.Serialization.
      IXmlSerializable;
      1. IXmlSerializalbeAttribute
      Поля
    1. Методы:
        2.1. Поля с флагом RTSpecialName,
        2.2. Поля с атрибутом
        1. Имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
        ,
        2.3. Поля с флагом IsSerializable;Методы:
        3.1. Констукторы,
        3.2. Виртуальные методы,
        3.3. Методы, обращающиеся
        1. Констукторы и деструкторы
        2. Виртуальные методы
        3. Обращающиеся к нативному коду с
        помощью идиомы
        1. использованием конструкции P/Invoke
        ,
        3.4.
        1. Методы с атрибутом System.Runtime.CompilerServices.CompilerGeneratedAttribute
        ,
        3.5.
        1. Обобщенные (шаблонные) методы
        ;
        // ### деструкторы - есть такое?!
        1. (дженерики)
      1. Свойства (поля с геттерами и сеттерами):
        4.1. Свойства с атрибутом
        1. имеющие атрибут System.Runtime.CompilerServices.CompilerGeneratedAttribute
        ,
        4.2. Свойства типа, унаследованного от системного типа
        1. реализованные в пользовательском классе, унаследованном от System.Configuration.ApplicationSettingsBase
        (для WinForms
      2. Поля:
        1. Имеющие атрибут 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/)

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