Dotfuscator は、入力アセンブリを処理する際に、宣言による難読化で使用されている多数の属性を認識します。ソース コードでこれらの属性を使用することで、アプリケーション コードに沿って多数の保護機能を構成できます。このページでは、これらの属性について説明します。
属性の参照
難読化属性は、.NET 基本クラス ライブラリと Dotfuscator 参照アセンブリのどちらからでも参照することができます。どちらから参照するかによって属性の名前空間は変わりますが、その他の点で属性に違いはありません。
.NET 基本クラス ライブラリから参照する場合
難読化属性は、以下の .NET 基本クラス ライブラリのどちらにも定義されています。
- mscorlib.dll:オリジナルの .NET Framework バージョン 2.0(2005 年リリース)以降
- netstandard.dll:.NET Standard バージョン 2.0(近日リリース予定)以降
ほとんどの .NET プロジェクトがこれらの一方を既定で参照しているため、通常、プロジェクトに新しい参照を追加する必要はありません。
これらの属性の名前空間は System.Reflection です。
Dotfuscator 参照アセンブリから参照する場合
System.Reflection の難読化属性にアクセスできない古いフレームワークやプラットフォームを使用している場合、Dotfuscator には、代わりに参照できる代替アセンブリが付属しています。
アセンブリの名前は PreEmptive.ObfuscationAttributes.dll です。
このアセンブリは、公開されている nuget.org で検索し、プロジェクトに依存関係として追加することができます。
この代替アセンブリに定義されている属性の名前空間は PreEmptive.Dotfuscator.ObfuscationAttributes です。
属性の一覧
このセクションでは、Dotfuscator が難読化の動作を構成するために認識する属性を列挙します。
ObfuscationAttribute
アセンブリまたはコード要素を難読化する方法を指定します。属性を使用するたびに、保護の変換を指定すると共に、Dotfuscator がコンパイルされたアセンブリを処理するときに、この属性でアノテーションが付けられた要素をその機能の対象除外とするか対象選択とするかどうかを指定します。実質的に言えば、これは Dotfuscator Community では、アノテーションを付けた型やメンバーを名前変更対象から除外するように指定できることを意味します。その他の変換は Dotfuscator Professional でのみ使用できます。
Microsoft Docs に掲載されている ObfuscationAttribute に関する詳細ドキュメントも参照してください。
名前空間:System.Reflection または PreEmptive.Dotfuscator.ObfuscationAttributes
適用対象:アセンブリ、型、またはメンバー
1 つのコード要素で複数個使用可能:はい
要件:
- Dotfuscator がこの属性の使用を認識し、それに応じて難読化を行うようにするには、この属性が含まれている入力アセンブリの入力オプション、難読化属性の使用を有効にしておく必要があります(既定で有効です)。
- Dotfuscator が保護されているアセンブリからこの属性の使用を除去するようにするには、次の条件の 1 つ以上を満たしている必要があります。
- この属性が含まれている入力アセンブリの入力オプション、難読化属性の除去が有効(既定の設定)である。
- この属性の StripAfterObfuscation プロパティが true(既定値)である。
プロパティ:
-
Feature:指定する難読化変換の名前。
- 既定値は all です。これは renaming の別名です。
- default:renaming の別名です。
- renaming:名前変更の対象除外を指定するときに使用します。
-
Exclude:true の場合、Dotfuscator は、アノテーションが付けられたコード要素を指定された機能の対象から除外します。false の場合は、当該のコード要素を指定された機能の対象として選択します。
- 既定値は true です。
- renaming の対象除外を指定する場合は、true を使用します。
- Dotfuscator では、各変換処理に対して指定可能な Exclude プロパティの値は、それぞれの変換処理でサポートされている特定の 1 つの値のみです。Dotfuscator は、サポートされていない Exclude 値が指定されている規則を無視します。このため、上記に指定されている機能固有の値を使用する必要があります。
-
ApplyToMembers:型にアノテーションを付ける場合に、その型のメンバーおよび入れ子になっている型のすべてに属性の難読化機能を適用するかどうかを指示します。
- 既定値は true です。
-
StripAfterObfuscation:true の場合、Dotfuscator は、この属性の使用を出力アセンブリから除去します。
- 既定値は true です。
- Dotfuscator は、入力オプションの難読化属性の除去が有効(既定の設定)になっている場合は、このプロパティに関係なく、常に入力アセンブリから属性のすべての使用を除去します。
ObfuscateAssemblyAttribute
アセンブリをライブラリ アセンブリと見なすかどうかを指定します。この属性の使用は、入力オプションのライブラリ モードをオーバーライドします。
Microsoft Docs に掲載されている ObfuscateAssemblyAttribute に関する詳細ドキュメントも参照してください。
名前空間:System.Reflection または PreEmptive.Dotfuscator.ObfuscationAttributes
適用対象:アセンブリ
1 つのコード要素で複数個使用可能:いいえ
要件:
- Dotfuscator がこの属性の使用を認識し、それに応じて難読化を行うようにするには、この属性が含まれている入力アセンブリの入力オプション、難読化属性の使用を有効にしておく必要があります(既定で有効です)。
- Dotfuscator が保護されているアセンブリからこの属性の使用を除去するようにするには、次の条件の 1 つ以上を満たしている必要があります。
- この属性が含まれている入力アセンブリの入力オプション、難読化属性の除去が有効(既定の設定)である。
- この属性の StripAfterObfuscation プロパティが true(既定値)である。
プロパティ:
-
AssemblyIsPrivate:true の場合、Dotfuscator はアセンブリをライブラリ以外のアセンブリと見なすため、より積極的に難読化します。false の場合は、Dotfuscator はアセンブリをライブラリ アセンブリと見なすため、アセンブリのパブリック コントラクトを保持します。
- 既定値は false です。
-
StripAfterObfuscation:true の場合、Dotfuscator は、この属性の使用を出力アセンブリから除去します。
- 既定値は true です。
- Dotfuscator は、入力オプションの難読化属性の除去が有効(既定の設定)になっている場合は、このプロパティに関係なく、常に入力アセンブリから属性のすべての使用を除去します。