DeployLX Software Protection System

Assembly Element

<Project>
  <Assembly>
    <UserString>
    <Rule>
    <Resource>
    <Namespace>
      <Type>
        <Member>
  <ExcludeDependency>
  <Search>

<Assembly
  shouldVeil="true|false"
  name="name"
  obfuscate="true|false|default"
  obfuscatePrivateNamespaces="true|false|default"
  obfuscateEverything="true|false|default"
  obfuscateEverythingTypes="ProjectDefault|None|
                            External|Obfuscated|Unobfuscated|Generics|All"
  namingScheme="ProjectDefault|Ascii|Collapsed|Hashed"
  serializable="Allowed|ISerializableAllowed|NotAllowed"
  isPrivate="true|false"
  source="path"
  destination="path"
  strongNameKeys="path|container"
  backup="true|false|default"
  enableMsilEncryption="true|false|default"
  encyrptMsil="true|false|default"
  enableStringEncryption="true|false|default"
  encryptStrings="true|false|default"
  encryptResources="true|false|default"
  compressResources="true|false|default"
  processSatelliteAssemblies="true|false|default"
  supportExceptionMapping="true|false|default"
  inlineCalls="true|false|default"
  killReflectors="true|false|default"
  killProfilers="true|false|default"
  killDebuggers="true|false|default"
  killCompilers="true|false|default"
  verifyStrongNames="true|false|default"
  addDiagnosticInfo="true|false|default"
  collect="None|Private|System|Gac|All|Override"
  isWholeProjectPackageTarget="true|false"
  excludeFromProjectPackage="true|false"
/>

Attributes

addDiagnosticInfo true|false|default

Indicates if CodeVeil should add attributes to the veiled assembly with the original un-obfuscated name. Used to diagnose naming issues during development.

backup true|false|default

Indicates if original assemblies should be backed up before veiling.

collect  

Determine how dependent assemblies should be collected. During the veiling process matching dependent assemblies will be copied to the outputPath. Multiple values can be separated by commas.

  None

Don't collect any dependencies.

  Private

References to private assemblies such as 3rd party assemblies and other application assemblies not included in the project.

  System

System assemblies included with the .NET framework.

  Gac

Indicates the assembly should be copied even if it is located in the GAC.

  All

Include all dependent assemblies.

  Override

Use the assembly settings and override any settings in the <Project> element.

compressMap true|false|default

Indicates if the obfuscation map used for exception translation should be compressed. Normally reduces file size by 80-90%.

compressResources true|false|default

Indicates if managed resources in the assembly should be compressed.

destination path

The path where the veiled assembly should be saved. If empty uses the source file name and the default <Project> outputPath.

enableMsilEncryption true|false|default

Indicates if Code Encryption is enabled for the assembly. Does not automatically add encryption. Use encryptMsil to encrypt all methods.

enableStringEncryption true|false|default

Indicates if string encryption is enabled. Use encryptStrings to encrypt all strings.

encryptMsil true|false|default

Indicates if all the methods in the assembly should be encrypted. See the Code Encryption topic for details.

encryptResources true|false|default

Indicates if all resources in the assembly and its satellite assemblies should be encrypted.

encryptStrings true|false|default

Indicates if all the User Strings in the assembly should be encrypted. See the String Encryption topic for details.

excludeFromProjectPackage true|false

Indicates if the assembly should not be bundled when Whole Project Bundling and Encryption is enabled.

inlineCalls true|false|default

Indicates if eligible calls to methods and properties should be inlined.

isPrivate true|false

Indicates if the assembly is intended for use only by the application and all assemblies that use it are included in the <Project> and public members can safely be renamed.

isWholeProjectPackageTarget true|false

Indicates if this assembly is the target for Whole Project Bundling and Encryption.

killCompilers true|false|default

Indicates if CodeVeil should prevent third parties from compiling against the protected assembly. See the Runtime Protection topic for details.

killDebuggers true|false|default

Indicates if CodeVeil should kill debuggers that attempt to debug the process with the veiled assembly. See the Runtime Protection topic for details.

killProfilers true|false|default

Indicates if CodeVeil should close the process when it is being profiled. See the Runtime Protection topic for details.

killReflectors true|false|default

Indicates if CodeVeil should add junk meta-data that cannot be processed by offline disassemblers like Reflector and ILDASM.

name name

The name of the assembly.

namingScheme  

The obfuscation renaming scheme to use.

  ProjectDefault

Use the project default.

  Ascii

Uses ascii printable characters with simple renaming rules.

  Collapsed

Collapse names into non-printable characters. May result in longer names and larger assembly but results in more difficult names.

  Hashed

Cryptographic hashed names based on the original name.

obfuscate true|false

Indicates if obfuscation should be enabled for all assemblies in the project.

obfuscateEverything true|false|default

Indicates if all method calls should be obfuscated.

obfuscateEverythingTypes  

Disguise calls to methods using advanced call shadowing. See the Obfuscate Everything Protection topic for details.

  ProjectDefault

Use the default project settings.

  None

Don't disguise calls to any methods.

  External

Disguise calls to methods defined in other assemblies.

  Obfuscated

Disguise calls to obfuscated methods in this assembly.

  Unobfuscated

Disguise calls to unobfuscated methods in this assembly.

  Generics

Disguise calls to generic methods.

  All

Disguise all calls.

obfuscatePrivateNamespaces true|false|default

Indicates if namespaces with all private classes should be obfuscated.

outputPath path

Root path to the folder where veiled assemblies should be saved and dependent assemblies collected.

processatelliteAssemblies true|false

Indicates if CodeVeil should automatically locate and process satellite assemblies and apply resource encryption, compression and resource renaming to satellite assemblies.

serializable  

Indicates how serializable types should be treated by default.

  Allowed

Serializable types are allowed to be obfuscated using the regular naming rules.

  ISerializableAllowed

Types that explicitly implement ISerializable are allowed to be obfuscated sing the regular naming rules.

  NotAllowed

Serializable types should not be obfuscated.

shouldVeil true|false

Indicates if the assembly should be included in the veiling process. If false, the assembly is only used for cross-assembly reference resolution and is copied to the <Project> outputPath.

source path

The path to the assembly relative to the project file.

strongNameKeys  

Keys used to re-sign the assembly.

  path

The path to the .SNK file to use when resigning the assembly.

  container

The path to the machine store where the signing keys are stored. Must begin with container://.

supportExceptionMapping true|false|default

Indicates if CodeVeil should save a map and use special naming conventions to support de-obfuscating exception stack traces.

verifyStrongNames true|false|default

Verify the signatures of this assembly if strongly named, and the signatures of assembly dependencies. Works even if strong name verification is disabled on the machine.

Child Elements

<Rule>

Defines an obfuscation selection rule to enforce naming rules for specific assembly members.

<Resource>

Defines a resource and its encryption and compression settings.

<Namespace>

Namespace element containing <Type> elements.

See Also