Methods and Algorithms of Protection
There is a list of protection methods, as well as code and resource intellectual analyzing algorithms implemented in our service:
Renaming
Renaming of classes and their members, with full Generics support, inheritance, overloading of virtual methods, obfuscation default attributes analyzing.
Assembly Merging
Assembly merging is merging of a code from several initial protected assemblies into one.
Decomposition
Decomposition of the class structure into procedural representation is a unique development of our product based on the idea of transfer of a program from an object-oriented form (which is simple for reverse engineering) to the procedural style, with maximum destruction of all available information stored in metadata (but with preservation of full functionality of a scavenger).
Control Flow Obfuscation
Control flow obfuscation is hiding of a code of program algorithms by creation of convoluted multilogic which is complicated for analyzing (true and false branches, switch jumps and other methods). In other words, the so-called spaghetti code. The behavior of the program does not change in this case.
External Method Call Hiding
External method call hiding is substitution of explicit method call from external assemblies (including calls to the Common Language Runtime) with implicit jump via an unmanaged pointer taken out of metadata on the basis of an encrypted identifier.
String Encryption
String encryption on the basis of own algorithm. It uses dynamic variables and encrypted data blocks with the purpose of maximum complication of potential automatic obfuscation.
WPF Obfuscation
Automatic detection and correct obfuscation of types, methods and fields which are available for calling from Windows Presentation Foundation. It works on the basis of decompilation and further repeated BAML resources assembly which results in renaming of the maximum possible amount of data.
Reflection Analyzing
Reflection analyzing is a set of algorithms which trace calling to reflection methods (both methods of explicit calling by name and enumeration of class members). It traces links automatically and corrects names in the source code.