Поделиться через


Декларативное запутывание с использованием настраиваемых атрибутов

ms227281.ce(ru-ru,VS.90).jpgms227281.pro(ru-ru,VS.90).jpg Платформа .NET Framework версии 2.0 предоставляет два новых настраиваемых атрибута, предназначенных для упрощения автоматического запутывания сборок без необходимости настройки файлов конфигурации. В данном разделе описана процедура использования указанных атрибутов средством Dotfuscator. Предполагается, что пользователь знаком с настраиваемыми атрибутами и способами их применения в используемом языке разработки.

System.Reflection.ObfuscateAssemblyAttribute

Данный атрибут используется на уровне сборки для задания средству Dotfuscator правил запутывания сборки в целом. Если свойству AssemblyIsPrivate задано значение ЛОЖЬ, Dotfuscator для обработки сборки будет использовать режим библиотеки. Если задано значение ИСТИНА, Dotfuscator не будет обрабатывать сборку в режиме библиотеки и выполнит переименование максимально возможного числа членов, в том числе и открытых.

System.Reflection.ObfuscationAttribute

Данный атрибут используется для типов и их членов и задает средству Dotfuscator правила их запутывания.

Свойство функции

Данное строковое свойство имеет значение по умолчанию «all». Оно предназначено для того, чтобы можно было независимо настроить несколько преобразований запутывания путем маркирования элемента с помощью нескольких атрибутов запутывания, имеющих различающиеся строки функции.

Dotfuscator сопоставляет строки функции «default» и «all» со строкой «renaming».

Ниже приводится список строк функции, которые распознаются средством Dotfuscator.

Строка функции Действие
renaming атрибут для настройки переименования
controlflow атрибут для настройки запутывания потока управления
stringencryption атрибут для настройки шифрования строк
trigger атрибут для настройки очистки с помощью пометки элемента с примечанием в качестве точки входа
conditionalinclude атрибут для настройки очистки с помощь условного включения элемента с примечанием

При необходимости можно сопоставить другие строки функции со строкой «renaming», используя таблицу свойств «Строки сопоставления функций» на вкладке «Настройка».

Dotfuscator игнорирует атрибуты со строками функций, которые он не распознает.

Свойство исключения

Данное свойство логического типа имеет значение по умолчанию ИСТИНА. Это значение говорит о том, что маркированный элемент должен быть исключен из преобразования, которое указано в свойстве функции. Когда свойство имеет значение ЛОЖЬ, маркированный элемент должен быть включен.

Текущая версия Dotfuscator поддерживает одно значение свойства исключения для любого данного преобразования. Dotfuscator игнорирует правила, у которых заданы неподдерживаемые значения исключения. Ниже приводится обзорная таблица.

Строка функции Поддерживаемое значение исключения
renaming Истина
controlflow Истина
stringencryption Ложь
trigger Ложь
conditionalinclude Ложь

Свойство ApplyToMembers

Данное свойство логического типа имеет значение по умолчанию ИСТИНА. Если этот атрибут применяется к сборке или типу, значение ИСТИНА указывает на то, что операция должна быть также применена и ко всем членам (включая вложенные типы) выбранных типов. В противном случае операция применяется только к типам, но не к их членам (или вложенным типам).

Разрешение или запрет декларативного запутывания

Средство Dotfuscator позволяет разрешить или запретить декларативное запутывание для всех входных сборок. Если оно запрещено, Dotfuscator будет игнорировать настраиваемые атрибуты, касающиеся запутывания. Такое запутывание также можно запретить для определенных сборок.

Снятие атрибутов декларативного запутывания

Dotfuscator может снять атрибуты запутывания после окончания обработки, чтобы выходные сборки не содержали никакой информации о том, каким образом выполнялось запутывание. Оба атрибута декларативного запутывания включают свойство логического типа StripAfterObfuscation со значением по умолчанию ИСТИНА.

Dotfuscator также имеет настройки конфигурации, которые взаимодействуют со значением свойства StripAfterObfuscation во время запутывания.

Настройки, которые влияют на снятие атрибутов декларативного запутывания и их взаимодействие, приведены в следующей таблице.

Атрибут принимается Атрибут снимается Свойство StripAfterObfuscation атрибута Результат
Да Да Истина или Ложь Атрибут снят
Да Нет Истина Атрибут снят
Да Нет Ложь Атрибут сохранен
Нет Да Истина или Ложь Атрибут снят
Нет Нет Истина или Ложь Атрибут сохранен

Использование строк сопоставления функций

Dotfuscator позволяет сопоставить значения, содержащиеся в свойстве функции атрибута запутывания, со строками функций, которые распознаются средством Dotfuscator.

Например, можно добавить в приложение атрибуты запутывания, которые ссылаются на функцию под названием «testmode». По умолчанию Dotfuscator не распознает данную строку функции, следовательно, атрибуты будут проигнорированы. Если впоследствии потребуется, чтобы Dotfuscator использовал указанные атрибуты для настройки переименования и запутывания потока управления, можно сопоставить строку функции «testmode» со встроенными строками «renaming» и «controlflow».

© 2002-2007 PreEmptive Solutions. Все права защищены.