.NET applications can be rapidly reverse-engineered because compiled .NET applications include all the original identifier names from the source: method names, type names, property names, and so on. This makes it easy to retrieve an almost-exact copy of the original source code, with simple drag-and-drop tools.
PreEmptive Protection Dotfuscator Community includes Renaming obfuscation which changes the names of types, fields, properties, methods, and parameters within a compiled .NET app. By changing meaningful names (like `ComputeGdp`) to valid but meaningless names (like `a`), this transform makes reverse-engineering much more difficult. Even if an attacker decompiles an assembly, they will be missing key information about what the code elements mean and how they relate to one another.
Renaming is a powerful form of protection, and simple to enable, but it requires careful testing of the final application to ensure that all runtime behavior is unaffected. This is because some applications and frameworks rely on certain code elements having their original names at runtime, and renaming changes those names.
Dotfuscator automatically identifies most required renaming exclusions and automatically applies those exclusions, in most applications. It also includes general rules for reflection and data binding (and more), and specific rules that can be seen on the Built-In Rules tab.
Note that Dotfuscator Professional includes stronger renaming features, like Enhanced Overload Induction, as well as numerous other obfuscation transforms and additional ways to protect apps from theft, tampering, and counterfeiting. You can compare Dotfuscator Community and Professional here and Evaluate Dotfuscator Professional at any time.