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.
ArmDot itself runs on any platform that supports .NET Core, including Windows, Linux, and macOS.
ArmDot supports the following frameworks:
|.NET Framework||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,
|.NET Core||3.1, 3.0,
2.2, 2.1, 2.0,
ArmDot provides the following obfuscation options:
|Names obfuscation||A 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 obfuscation||In 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 virtualization||Although 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 protection||Often embedded resources contain sensitive assets, including images and strings. ArmDot encrypts embedded resources and removes them, so it becomes impossible to extract and modify them||ProtectEmbeddedResources|
|Files embedding||An 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 encryption||Frequently 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|
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