Getting Started

ArmDot is a cross-platform obfuscator for .NET with a rich set of obfuscation options, a licensing API, and the ability to embed files, including unmanaged DLLs.

ArmDot obfuscates all kinds of .NET applications: class libraries, console applications, WinForms, and WPF applications.

Supported Platforms

ArmDot itself runs on any platform that supports .NET Core, including Windows, Linux, and macOS.

ArmDot supports the following frameworks:

NameVersions
.NET10.0, 9.0, 8.0, 7.0, 6.0, 5.0
.NET Framework4.8.1, 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,
3.5, 3.0
2.0,
1.1, 1.0
.NET Core3.1, 3.0,
2.2, 2.1, 2.0,
1.1, 1.0

Obfuscation Options

ArmDot provides the following obfuscation options:

OptionsDescriptionArmDot attribute
Names obfuscationA metadata information: names of types, methods, fields, events, and properties, gives a lot of information about an application. ArmDot changes the name to nonsensical text.ObfuscateNames
Control flow obfuscationIn order to make the logics of original code (conditional and unconditional branches, loops, and exception handling) harder to understand, ArmDot converts the code into a single large loop. This approach reliably hides the control flow of the original code.ObfuscateControlFlow
Code virtualizationAlthough control flow obfuscation makes it impossible to understand how branches and loops work, individual instructions are still visible. ArmDot virtualizes code to encrypt original instructions. In order to do that, the instructions are converted to a set of new instructions for a special virtual machine. A virtual machine is unique every time.VirtualizeCode
Embedded resources protectionOften embedded resources contain sensitive assets, including images and strings. ArmDot encrypts embedded resources and removes them, so it becomes impossible to extract and modify themProtectEmbeddedResources
Files embeddingAn application can depend on unmanaged DLLs. With the help of ArmDot, you can link the file into a protected assembly. Thanks to application virtualization, such files are not extracted to a disk, but resides in process memory instead.EmbedFile
Strings encryptionFrequently a code uses string literals that developers would like to hide, for example, database connections. ArmDot encrypts strings are used in the code, so they become hidden from prying eyes.HideStrings

Build Automation

ArmDot has a cross-platform obfuscation command line tool that can be integrated into the CI process.

Also, ArmDot has a NuGet package to add obfuscation task to MSBuild and dotnet build.