使用自定义属性的声明性模糊处理
.NET Framework 2.0 版提供两个新的自定义属性,以便在不建立配置文件的情况下让程序集的自动模糊处理更加简单和轻松。本节简要介绍如何在 Dotfuscator 中使用这些属性。这里假定您熟悉自定义属性,也熟悉如何在开发语言中应用这些属性。
System.Reflection.ObfuscateAssemblyAttribute
此属性在程序集级使用,用于指示 Dotfuscator 如何将程序集作为整体进行模糊处理。如果 AssemblyIsPrivate 属性设置为 false,则指示 Dotfuscator 以库模式运行程序集。如果该属性设置为 true,则 Dotfuscator 不以库模式运行程序集,并尽量进行重命名,重命名对象包括公共类型和公共成员。
System.Reflection.ObfuscationAttribute
此属性用于类型及其成员,并指示 Dotfuscator 如何对项进行模糊处理。
功能属性
此字符串属性的默认值为“all”。提供此属性的目的在于,通过使用多个 ObfuscationAttribute(每个都具有不同的功能字符串)标记一个项,从而独立配置多个模糊处理转换。
Dotfuscator 将“default”和“all”功能字符串映射到“renaming”。
下面是 Dotfuscator 能够理解的其他功能字符串的列表。
功能字符串 | 操作 |
---|---|
renaming | 属性配置重命名 |
controlflow | 属性配置控制流模糊处理。 |
stringencryption | 属性配置字符串加密 |
trigger | 属性通过将带批注的项标记为入口点来配置精简 |
conditionalinclude | 属性通过有条件地包含带批注的项来配置精简 |
如有必要,可以使用“设置”选项卡上的“功能映射字符串”属性页将其他功能字符串映射到“renaming”。
Dotfuscator 会忽略它无法理解的带有功能字符串的属性。
排除属性
此布尔属性的默认值为 True。如果为 True,则指示应从“功能”属性所暗含的转换中排除带标记的项。如果为 False,则指示应包含带标记的项。
对于任何给定的转换,Dotfuscator 的当前版本均支持“排除”属性的一个值。Dotfuscator 会忽略具有不受支持的“排除”值的规则。下面的列表进行了总结。
功能字符串 | 受支持的排除值 |
---|---|
renaming | True |
controlflow | True |
stringencryption | False |
trigger | False |
conditionalinclude | False |
ApplyToMembers 属性
此布尔属性的默认值为 True。此属性应用于程序集或类型时,True 值指示还应将该操作应用于所选类型的所有成员(包括嵌套类型)。如果为 False,则该操作仅应用于类型而不应用于类型的成员(或嵌套类型)。
启用或禁用声明性模糊处理
Dotfuscator 允许对所有输入程序集启用或禁用“声明性模糊处理”。如果未启用,Dotfuscator 则忽略与模糊处理相关的自定义属性。还可以对特定程序集禁用声明性模糊处理。
去除声明性模糊处理属性
Dotfuscator 能够在处理完成时去除模糊处理属性,以便输出程序集不包含有关模糊处理方式的线索。这两个声明性模糊处理属性都包含一个默认值为 true 的“StripAfterObfuscation”布尔属性。
Dotfuscator 还具有在模糊处理时与 StripAfterObfuscation 属性的值进行交互的配置设置。
下表总结了对去除声明性模糊处理属性产生影响的设置,以及些设置的交互方式。
Dotfuscator 允许属性 | Dotfuscator 去除属性 | 属性 (Attribute) 的 StripAfterObfuscation 属性 (Property) | 结果 |
---|---|---|---|
是 | 是 | True 或 False | 去除属性 |
是 | 否 | True | 去除属性 |
是 | 否 | False | 保留属性 |
否 | 是 | True 或 False | 去除属性 |
否 | 否 | True 或 False | 保留属性 |
使用功能映射字符串
Dotfuscator 允许将 Obfuscation 属性 (Attribute) 的功能属性 (Property) 中包含的值映射到 Dotfuscator 能够理解的功能字符串。
例如,可以使用引用“testmode”功能的模糊处理属性批注应用程序。默认情况下,Dotfuscator 不能理解此功能字符串;因此将忽略这些属性。如果以后希望 Dotfuscator 用这些属性来配置重命名和控制流模糊处理,可以将功能字符串“testmode”映射到 Dotfuscator 内置的“renaming”和“controlflow”字符串。
© 2002-2007 PreEmptive Solutions. 保留所有权利。