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