Renamer


This protection renames and confuses the symbols so that the decompiled source code cannot be compiled or read.


This protection is available in the editions:

Community Professional Enterprise

Parameters

  • Password: This parameter indicates the password that should be used to encrypt the symbols when using the reversible mode.

    • Type of value: string
    • Default: null
  • Rename arguments: Indicates whether the name of the method parameters should be deleted.

    • Type of value: bool
    • Default: true
  • Rename enumerations: Indicates whether the name of the enumeration values should be changed.

    • Type of value: bool
    • Default: true
  • Flatten: Indicates whether the symbols should be renamed, even if the analyzer evaluates that the name should not be changed.

    • Type of value: bool
    • Default: false
  • Rename public elements: Indicates whether to rename symbols, even if the item is visible outside the application.

    • Type of value: bool
    • Default: false
  • Rename PDB: Indicates whether to change the names of variables and files in PDB.

    • Type of value: bool
    • Default: false
  • Rename XAML: Indicates whether the name of the XAML files should be changed.

    • Type of value: bool
    • Default: true

Modes

  • Empty: All symbols are replaced by an empty string.

    It is not recommended, it can cause various problems.

  • Unicode: Rename the symbols to illegible Unicode characters.

    It is possible that reflection do not work in this mode.

  • Ascii: Rename the symbols to legible ASCII characters.

    It is possible that reflection do not work in this mode.

  • Letters: Rename the symbols to English letters.

  • Decodable: Rename the symbols to decodable strings.

    The confusing name assignment will be saved in the output folder in the file "symbols.map".

  • Sequential: Rename the symbols to sequential strings.

    The confusing name assignment will be saved in the output folder in the file "symbols.map".

  • Reversible: Obfuscated names may be decoded by providing the password used in obfuscation.

  • Debug: Add an underscore before the symbols.

    Not intended for productive use.

  • Random: Rename the symbols randomly with proper names of the .NET language.

    The confusing name assignment will be saved in the output folder in the file "symbols.map".

Code example

  • Without rename
internal class Program 
{
    private static void Main(string[] args) {
        var name = getUser();
        Console.WriteLine($"Hello, {name}");
        Console.ReadKey();
    }
}
  • Renamed
internal class zvsd5gf6kb 
{
    private static void c5ata2sg7i(string[] ku4qwm8u37) {
        var bkn5clw1o4 = 0xfbdflqvw();
        Console.WriteLine($"Hello, {bkn5clw1o4}");
        Console.ReadKey();
    }
}

Exclusions

  • Exclude with attribute

    Include this attribute in your source code:

[Obfuscation(Exclude = true, Feature = "renamer")]
  • Exclude from the interface

    You can exclude this protection from the methods or classes you want.

Compatibility

Platform Compatibility
.NET Framework Full compatibility, compatible versions: 4.8, 4.7.2, 4.7.1, 4.7, 4.6.2, 4.6.1, 4.6, 4.5.2, 4.5.1, 4.5, 4.0, 3.5, 3.0, 2.0.
ASP .NET Full compatibility, compatible versions: 4.8, 4.7.2, 4.7.1, 4.7, 4.6.2, 4.6.1, 4.6, 4.5.2, 4.5.1, 4.5, 4.0, 3.5, 3.0, 2.0.
Windows Phone Compatibility subject to the version of the framework, compatible in general aspects.
WPF Full compatibility, available in all versions.
SQL CLR Applications Compatibility subject to the version of the framework, compatible in general aspects.
Silverlight Compatibility subject to the version of the framework, compatible in general aspects.
Xamarin.iOS Partial compatibility, compatible versions: 10.8. Xamarin is not fully adapted in dotnetsafer
Xamarin.Mac This version is under development, availability has not been checked.
Xamarin.Andoid This version is under development, availability has not been checked.
.NET Core Full compatibility, compatible versions: 3.1, 3.0, 2.2, 2.1, 2.0.
.NET Standard Library Full compatibility, compatible versions: 2.1, 2.0.
Unity Compatibility subject to the version of the framework, compatible in general aspects.
UWP Compatibility subject to the version of the framework, compatible in general aspects.
Satellite Assembly Suppor Compatibility subject to the version of the framework, compatible in general aspects.
WinRT Compatibility subject to the version of the framework, compatible in general aspects.
Integrated ClickOnce Compatibility subject to the version of the framework, compatible in general aspects.
Managed C++ (Mixed Mode) Assembly Support Compatibility subject to the version of the framework, compatible in general aspects.