Please carefully read the list below. Not only this will bring you better obfuscation results but also this will help you to avoid possible pitfalls.
- 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 ofCLSCompliantAttribute
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
Additional for Visual Basic .NET
-
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