Versions Compared

Key

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

...

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

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

...

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

...

  1. Типы с атрибутом System.Runtime.CompilerServices.CompilerGeneratedAttribute,
    1.3.

...

  1. Типы с флагом IsSerializable,
    1.4.

...

  1. Типы, реализующие (наследующие лично или через базовые типы) интерфейс System.Xml.Serialization.IXmlSerializable;

...

  1. Поля:
    2.1.

...

  1. Поля с флагом RTSpecialName,
    2.2.

...

  1. Поля с атрибутом System.Runtime.CompilerServices.CompilerGeneratedAttribute,
    2.3.

...

  1. Поля с флагом IsSerializable;

...

  1. Методы:
    3.1.

...

  1. Констукторы,
    3.2.

...

  1. Виртуальные методы,
    3.3.

...

  1. Методы, обращающиеся к нативному коду с помощью идиомы P/Invoke,
    3.4.

...

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

...

  1. Обобщенные (шаблонные) методы;
    // ### деструкторы - есть такое?!

...

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

...

  1. Свойства с атрибутом System.Runtime.CompilerServices.CompilerGeneratedAttribute,
    4.2.

...

  1. Свойства типа, унаследованного от системного типа System.Configuration.ApplicationSettingsBase (для 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/)