General Best Practices

Eazfuscator.NET

General Best Practices

  • Use minimal but feasible visibility of the classes and their members
  • Avoid using System.Runtime.CompilerServices.InternalsVisibleToAttribute attribute for production assemblies
  • Use CLSCompliantAttribute(true) to mark CLS-compliant assemblies. If you produce library or component which can be used by your customers then you should mark the assembly as CLS-compliant to ensure successful interoperability. Eazfuscator.NET internally uses the value of CLSCompliantAttribute to make a decision on the level of obfuscation to apply. Eazfuscator.NET turns off all CLS-incompatible obfuscation features when the input assembly is marked as CLS-compliant
  • Try to keep reasonable small number of the assemblies in your product. It leads to a greater code integration inside one assembly, thus it is harder to deduct the logic that is contained inside the assembly. Assembly number reduction can be achieved at the application design phase. Alternatively, assemblies merging feature can be used for that purpose
  • Use symbol names encryption in production releases of your product. It allows you to decode error stack traces and log files
  • It is highly recommended to sign your assemblies with a strong name. The signed assemblies are better protected against integrity violations
  • It is highly recommended to use resource encryption to hide assembly resources from prying eyes
  • Please consider to virtualize the methods that you want to hide by any means possible
  • Test your product after obfuscation
  • It is highly recommended to use Option Strict On to achieve good obfuscation results and avoid common problems. Alternatively, you may use a compatibility mode to workaround possible issues