.NET Encryption Limitation

The .NET Encryption shell protection provides a fast and easy way to protect .NET applications. It uses a technique to encrypt the whole managed assembly, and then creates a native executable that is composed of the loader and the encrypted assembly. The loader functions to detect the Key and decrypt the assembly at run time. It is reported that this method may cause a conflict in a .NET application using the Assembly class, the Serialization or Attribute objects. The following provides a guideline to help you avoid the conflict. So you can integrate shell protection into your application successfully.

General Guideline

When it appears that the .NET Encryption shell protection causes an exception in your application, follow the guideline below.

 

         Try to avoid using the conflicted class or object, or use an alternative method. See the known exceptions and resolution below.

         Consider to code part of your program causing the conflict into a separate DLL. Then, you can integrate the shell protection into the main program.

         Alternatively, consider using the Instant KeyCheck API or the KeyCheck API, instead of the shell protection. In this case, you can also use the API together with a .NET obfuscation tool to help increase the security of your application.

Known Exceptions

Unknown error 0x80131604

This exception is caused by a conflict in an application using the Assembly class, e.g.

System.Reflection.Assembly.GetEntryAssembly().Location;

You may use an alternative method below to resolve the exception.

Application.ExecutablePath;

Unable to find assembly 'A2Z_Software, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

This exception is caused by a conflict in an application using the Serialization or Attribute objects. You may code part of your program using these objects into a separate DLL. Then, you can integrate the shell protection into the main program.