Sequence of protection

Two console utilities are used for the automatic protection of .NET assemblies:

UtilitePurpose
CodeObfuscator.exeMSIL simbol obfuscation and string encryption
CodeProtect.exeMSIL code encryption

You can use the CodeObfuscator.exe and CodeProtect.exe utilities collectively or use one of them separately. However, a specific sequence for using the utilities must be followed – first the application needs to be obfuscated and only then proceed with code protection:

Principle of protection

A twostage protection approach is used for the automatic protection of .NET assemblies with each stage performing its own tasks in the overall process:

This concept permits a significant increase in the overall level of .NET protection, since the widely distributed .NET reverse engineering tools (ildasm, reflector.net, etc.) become useless.

It is predicated upon the fact that most of .NET assembly’s code is stored in the protected native container, which in turn is protected by both pseudocode (software) and the dongle’s functionality (hardware solution).

When MSIL code previously encrypted by a hardware algorithm is called, the dongle itself is addressed first for decryption purpose and only after the execution of code begins.

Limitations of protection

  1. Assemblies with mixed code and multimodular assemblies are not supported.
  2. See the limitations for autoprotection of executable Native files.


Guardant dongle is a highly effective mean of software/hardware protection. It allows building protection of virtually any level of complexity and tamperproofness.

Use the symbol obfuscator and MSIL-code protection utility. It is also reasonable to use the following options:

You have to remember the following when using the MSIL-code automatic protection utility: