Skip to Content
新しいバージョン 12 を公開しました 🎉

カスタム属性

Babel は、.NET Framework と .NET が提供するカスタム属性 System.Reflection.ObfuscationAttribute  と System.Reflection.ObfuscateAssemblyAttribute  による宣言的な難読化をサポートしています。

ObfuscateAssembly 属性

System.Reflection.ObfuscateAssemblyAttribute はアセンブリレベルの属性で、プライベートアセンブリ用の難読化ルールを使用するよう Babel Obfuscator に指示します。

プライベートアセンブリとは、ライブラリとして使用されないアセンブリ、つまりほかのソフトウェアコンポーネントから使用されないアセンブリです。Babel はプライベートアセンブリを完全に難読化し、すべてのパブリックシンボルをリネームします。

[assembly: ObfuscateAssembly(true)]

コンストラクターのブール型引数「assemblyIsPrivate=true」は、アセンブリが 1 つのアプリケーションの範囲内で使用され、パブリックインターフェイスを安全にリネームできることを Babel に伝えます。

Obfuscation 属性

System.Reflection.ObfuscationAttribute 属性は、型、メソッド、イベント、プロパティ、フィールドなどのアセンブリのメンバーに付けて、特定の難読化機能に対する動作を設定できます。

Obfuscation 属性には次のプロパティがあります。

Feature

Feature プロパティは、文字列値を難読化ツールの特定の機能、または機能のリストに対応付けます。Feature プロパティの既定値は「all」です。

Babel では、「all」は利用できるすべての機能を表し、「default」はリネーム機能を表します。

詳しくは、難読化の機能の表を参照してください。

Exclude

関連付けられたメンバーについて、難読化機能を除外するかどうかを示します。

ApplyToMembers

関連付けられた型に対する難読化ツールの動作を、その型のすべてのメンバーにも適用するかどうかを指定します。

StripAfterObfuscation

処理の後に属性を除去するかどうかを指定します。

次のコード例は、ObfuscationAttribute をメソッドに付けてコード暗号化を有効にする方法を示しています。

[Obfuscation(Feature="msil encryption", Exclude=false)] public string DoSomething() {

機能の拡張構文

Babel Obfuscator は、機能文字列の拡張構文をサポートしています。この構文では、各機能の名前の後に、機能のプロパティをキーと値のペアのリストとして設定できます。

[Obfuscation(Feature="msil encryption:source=opt;cache=true", Exclude=false)]#

Feature の拡張構文を使うと、ObfuscationAttribute をアセンブリレベルで設定して、アセンブリ全体の機能を設定できます。

リネーム

[assembly: Obfuscation(Feature="renaming:flatten namespaces=ACME.Test.*", Exclude=false)] [assembly: Obfuscation(Feature="renaming:flattenNamespaces=ACME.Data.*", Exclude=false)] [assembly: Obfuscation(Feature="renaming:internalize=true;rename parameters=true", Exclude=false)] [assembly: Obfuscation(Feature="renaming:overloaded=true;unicode=false", Exclude=false)] [assembly: Obfuscation(Feature="renaming:name length=5;name prefix=Acme_", Exclude=false)]

難読化エージェント

Serializable types タスクと Reflected enums タスクについて、難読化エージェントを無効にします。

[assembly: Obfuscation(Feature="agent:tasknamelist=Serializable types,Reflected enums", Exclude=true)]

値の暗号化

命令数が 10 から 100 までのメソッドの値と配列を暗号化します。

[assembly: Obfuscation(Feature="value encryption:min instruction count=10; max instruction count=100", Exclude=false)]

Obfuscation 属性だけでは、選択した機能は有効になりません。この属性が機能するのは、その機能が構成で全体として有効になっている場合だけです。

その他の例

コンパイラーが生成したコードを難読化しません。

[assembly: Obfuscation(Feature="all:compilergenerated=true", Exclude=true)]
Last updated on