DeployLX Software Protection System

Project Element

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

<Project
  version="5.0"
  obfuscate="true|false"
  obfuscatePrivateNamespaces="true|false|default"
  namingScheme="Ascii|Collapsed|Hashed"
  obfuscateEverythingTypes="ProjectDefault|None|
                            External|Obfuscated|Unobfuscated|Generics|All"
  obfuscateEverything="true|false"
  backup="true|false"
  outputPath="path"
  strongNameKeys="path|container"
  serializable="Allowed|ISerializableAllowed|NotAllowed"
  enableMsilEncryption="true|false"
  encryptMsil="true|false"
  enableStringEncryption="true|false"
  encryptStrings="true|false"
  encryptResources="true|false"
  compressResources="true|false"
  processSatelliteAssemblies="true|false"
  supportExceptionMapping="true|false"
  mapPath="path"
  compressMap="true|false"
  collect="None|Private|System|Gac|All"
  inlineCalls="true|false|default"
  killReflectors="true|false"
  killProfilers="true|false"
  killDebuggers="true|false"
  killCompilers="true|false|default"
  verifyStrongNames="true|false|default"
  addDiagnosticInfo="true|false"
  packageReferencedAssemblies="true|false"
/>

Attributes

addDiagnosticInfo true|false

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

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.

compressMap true|false

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

compressResources true|false

Indicates if resources in the assembly and satellite assemblies should be compressed.

enableMsilEncryption true|false

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

enableStringEncryption true|false

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

encryptMsil true|false

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

encryptResources true|false

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

encryptStrings true|false

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

inlineCalls true|false

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

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

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

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

killReflectors true|false

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

mapPath path

Path to the file where the obfuscation map should be saved to.

namingScheme  

The obfuscation renaming scheme to use.

  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

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.

  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

Indicates if namespaces with all private classes should be obfuscated.

outputPath  

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

packageReferencedAssemblies true|false

Indicates if the collected referenced assembly dependencies should also be bundled in the package.

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.

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

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

verifyStrongNames true|false

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.

version 5.0|3.2

The project file format version.

Child Elements

<Search>

Defines additional search paths to use when locating dependent assemblies.

<Assembly>

Defines an assembly to be included in the project.

<ExcludeDependency>

Defines an assembly to exclude from Whole Project Bundling and Encryption.

See Also