Sobre o Agile.NET Code Protection

Proteção avançada de software para aplicativos .NET.

Agile.NET Code Protection helps you obfuscate every aspect of your code, including class and method names, managed resources, user strings, methods implementation, system and library calls. It protects more of your application because it knows what is safe to change and what needs to be left alone. Nevertheless, it gives you full control of the obfuscation process.

Agile.NET Code Protection Features

  • Advanced obfuscation features for .NET platform - Agile.NET obfuscator goes beyond traditional obfuscation methods. In addition to renaming your metadata entities, it also supports advanced obfuscation methods that will harden your overall protection scheme and foil reverse engineering altogether.
  • Entity Renaming - Agile.NET obfuscator renames all metadata constructs, this includes namespaces, class names, method signatures and fields as well as methods implementation and string values of your assembly. Renaming scheme includes 'unreadable chars' scheme, this method will transform classes, methods and field names to unprintable unicode chars. When decompiled, the result is an extremely difficult to understand source code. Since unprintable chars are used it won't be possible to compile the sources produced after decompilation.
  • Control Flow Obfuscation - Agile.NET obfuscator provide control of flow obfuscation, control flow obfuscation hides the control flow information of the program by transforming exiting code flow patterns to semantically equivalent constructs, however different than the code originally written. The control flow obfuscation algorithm converts the original implementation into spaghetti code thus making it extremely harder to infer program logic. Agile.NET .NET obfuscator ensures that application code flow of the obfuscated assembly remains intact.
  • Cross Assembly Obfuscation - Cross Assembly Obfuscation allows renaming of external references thus dramatically increasing the number of obfuscated constructs. Given a set of assemblies that interface each other, Agile.NET will rename classes, methods and fields referenced from other assemblies uniformly. For example, if class A declared in assembly A is referenced from assembly B and Agile.NET renames class A to A1, it will also rename B's external reference from A to A1.
  • Incremental obfuscation - Incremental obfuscation allows the developer to make changes to the original sources after releasing an obfuscated assembly and then provide a patch to the user that reflects the changes to the original application while preserving the name-mapping used in the original release. In order to accomplish this, a map file must be saved and later used to ensure that the renaming is preserved when making changes and re-releasing the obfuscated assembly.
  • Application Code Flow Remains Intact - It is essential that an obfuscator keep the functionality of the software totally intact while making the original source code unrecognizable if the obfuscated assembly is decompiled. Agile.NET obfuscator ensures that the obfuscated assembly will run the same way as the original assembly.
  • Configuring your obfuscation process - Obfuscation can introduce issues when reflection API is used in obfuscated assembly. Methods calls that were performed through the usage of reflection API are likely to fail once the application has been obfuscated, this happens since the method has been renamed by the obfuscator, however the call site still refers to the method by its original name. To mitigate these problems, Agile.NET obfuscator fully supports Microsoft's declarative obfuscation attributes. These attributes, declared directly in source code, allows the user to define class and method names that shouldn't be renamed.
  • String encryption - A common attacker will often search deployed assemblies for strings containing keywords such as 'GetLicense' or 'Invalid License'. By locating such strings, hackers attempt to circumvent the license protection embedded in the product that they are hacking. Agile.NET obfuscator provides the option of string encryption.
  • x64 platform support - Supports 32-bit and 64-bit applications
  • Framework support - Supports all versions of the .NET framework. The obfuscation tool can also be used to protect applications deployed under the .NET Compact Framework.
  • Mixed-mode Assemblies Support - Agile.NET can obfuscate mixed-mode assemblies.
  • Debugging - One of the side effects of obfuscation is the difficulty of debugging obfuscated code. Exceptions generated and reported by a user will typically include obfuscated method and class names making it almost impossible to trace back the stack trace in the source code. Agile.NET obfuscator generates a clearly labeled map file containing a detailed description of the obfuscated entities and their original names, this information is essential to the user in interpreting debugger output from the obfuscated assembly.
  • MSBuild and NAnt build Integration - Agile.NET integrates with MSBuild and NAnt thus promoting its usage as a part of an entire range of complex build scenarios.