You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Рекомендации по защите  .NET-приложений

Утилита CodeObfuscator.exe

Лексическая обфускация не применяется к следующим артефактам:

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


Утилита CodeProtect.exe

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

  1. Метод не имеет тела (в принципе, можно не указывать - и так очевидно)
  2. Метод принадлежит структуре (а не обычному классу)
  3. Метод - конструктор
  4. Метод - шаблонный (использует дженерики)
  5. Метод помечен кастомными атрибутами
  6. Тело метода содержит инструкцию calli (см. ссылку) (редкий случай, но возможный)
  7. Метод - деструктор или вызывается (прямо или косвенно) из деструктора
  8. Метод имеет обработчик исключения вида Fault или Filter; в C# встречается только Filter (использует нотацию с применением when) (см. ссылку)
  • No labels