スマート難読化
スマート難読化は Dotfuscator の機能の 1 つで、既知の API 使用パターンおよびアプリケーションの種類に対し、自動的に組み込みの難読化規則を適用するものです。
たとえば、アセンブリで Enum.ToString() などにより特定の列挙の名前を使用している場合、名前はコードやユーザーにとって重要な場合が多いため、スマート難読化により、その列挙のメンバーが名前変更対象から自動的に除外されます。
スマート難読化は処置を取る必要があることは認識できますが、静的分析がもたらす情報が十分でないためどの特定操作を行うべきかを判断できないことがあります。このような場合、スマート難読化はそのような判断ができない代わりに警告を発します。
スマート難読化を有効にしている場合(既定の設定)、ビルドを行うと、通常のビルド出力に加えて、スマート難読化の情報と警告も生成されます。
TransformXAML
TransformXaml は、マークアップ ファイルを解析して名前を変更する要素を識別し、対応する参照を更新します。
サポートされるマークアップ形式
この機能は、次のバイナリ形式およびテキストベース形式をサポートしています。
| 形式 | 説明 |
| XBF | UWP および Windows 8.x アプリケーションで一般的に使用されるバイナリ形式。 |
| BAML | バイナリとしてエンコードされた XAML ファイル。通常は WPF で使用されます。 |
| XAML | UI の標準マークアップ言語。 |
XAML の変換は既定では有効になっています。詳細については、アセンブリ単位の XAML の変換モードを参照してください。
宣言による難読化
Dotfuscator は、標準の .NET 属性を使ってアセンブリ内に宣言によって指定された構成にも従います。この処理は宣言による難読化と呼ばれています。
宣言による難読化を有効にするには
- 必要に応じて難読化属性を使ってコードにアノテーションを付けます。
-
関連する入力アセンブリごとに、必ず Honor obfuscation attributes オプションを有効にします。
- Strip obfuscation attributes オプションも有効にすることを強くお勧めします。Dotfuscator によってアセンブリが処理された後には、難読化属性は必要でなくなるためです。
- Dotfuscator 構成をビルドします。
たとえば、リフレクションによって呼び出されることが知られているメソッドの場合を考えましょう。このメソッドが Dotfuscator によって名前変更された場合に、リフレクションを使った検索が行われると、実行時エラーが発生します。
次のコードに示すようにこのメソッドに対して ObfuscationAttribute を使用すると、そのメソッドが名前変更対象から除外されるように指定することができます。
リフレクションからの呼び出し、名前の変更対象から除外:
[System.Reflection.Obfuscation(Exclude=true, Feature="renaming")]
public void CalledFromReflection(int someValue) {Dotfuscator がこのソース コードで生成されたアセンブリを処理する際、構成内のすべての対象除外処理が行われるだけでなく、このメソッドが名前変更対象から除外されます。
Suppress Ildasm(Ildasm を抑制する)グローバル オプション
Dotfuscator は、すべての出力アセンブリに SuppressIldasmAttribute を追加することにより、アセンブリが逆コンパイルされないようにすることができます。これにより同時に、公式の .NET 逆アセンブラーである ildasm がユーザーのアセンブリに作用しなくなります。この属性は ildasm による逆コンパイルに対してのみ保護を提供し、サード パーティ製ツールに対しては影響を与えない点に注意してください。
この機能は、構成ファイルを使用して有効にすることができます。