• ArmDot Home
  • Documentation
  • Tutorial
  • API
  • Download
Show / Hide Table of Contents
  • Getting Started
  • Tutorial
  • MSBuild Obfuscation Task
  • Embedded Files
    • Embedded Files
    • Predefined Directories
  • Key Generators
    • Key Generator for PHP
    • Key Generator for C/C++
  • Command Line Tools
    • ArmDotConsole.exe
  • API
    • ArmDot.Client
      • Api
      • Api.Hardware
      • Api.LicenseKeyState
      • EmbedFileAttribute
      • HideStringsAttribute
      • ObfuscateControlFlowAttribute
      • ObfuscateNamesAttribute
      • ObfuscateNamespacesAttribute
      • ProtectEmbeddedResourcesAttribute
      • VirtualizeCodeAttribute
    • ArmDot.Engine.MSBuildTasks
      • ObfuscateTask
  • Obfuscation Attributes
  • Stack Trace Deobfuscation
  • ArmDot Warnings
    • How to disable a warning?
    • Warning ARMDOT0001
    • Warning ARMDOT0002
    • Warning ARMDOT0003
    • Warning ARMDOT0004
    • Warning ARMDOT0005
    • Warning ARMDOT0006
    • Warning ARMDOT0007
    • Warning ARMDOT0008
  • Glossary
    • Hardware Id
  • License

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:

Name Versions
.NET 7.0, 6.0, 5.0
.NET Framework 4.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 Core 3.1, 3.0,
2.2, 2.1, 2.0,
1.1, 1.0

Obfuscation Options

ArmDot provides the following obfuscation options:

Options Description ArmDot attribute
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

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.

Back to top Armdot Home | Copyright © Softanics | Generated by DocFX