Changelog

Stay up to date - subscribe to the ArmDot changelog feed

Latest release
Version 2025.9 - Released October 9, 2025
Download version 2025.9

2025

Version 2025.9

October 9, 2025
  • AddedArmDot supports .NET 10.0.

Version 2025.8

July 28, 2025
  • FixedA method with a localloc instruction might crash after applying control flow obfuscation.

Version 2025.7

March 11, 2025
  • FixedIf ArmDot.Client.Api.PutKey was used in a .NET 9 project, the obfuscation task failed with an error indicating that an assembly reference for the type System.Management.ManagementObjectCollection could not be found.

Version 2025.6

March 5, 2025
  • FixedBy mistake, ArmDot obfuscated the name of the compiler-generated Settings class, which is used to store user settings in WinForms applications.

Version 2025.5

February 28, 2025
  • FixedArmDot.exe crashed on startup.

Version 2025.4

February 27, 2025
  • FixedObfuscation of types derived from System.Windows.Forms.Form now correctly applies when marked with the ObfuscateNames attribute.

Version 2025.3

February 13, 2025
  • FixedArmDot generated invalid IL code during virtualization when the original method contained calls to methods with a return type of ref struct.

Version 2025.2

January 20, 2025
  • FixedArmDot crashed when running on .NET 9.0.1.

Version 2025.1

January 8, 2025
  • FixedAddressed an issue where enabling hotpatching on Windows 11 caused DLLs loaded from embedded files to fail after installing the 2024-11 Cumulative Update Preview for Windows 11, Version 24H2 for x64-based Systems (KB5046740).

2024

Version 2024.9

October 18, 2024
  • FixedResolved an issue where the hardware ID could unexpectedly change, even though the hardware itself had not been altered.

Version 2024.8

October 2, 2024
  • FixedIn some cases, after applying control flow obfuscation or virtualization, the finally block was not executed when an exception was thrown from the corresponding try block.

Version 2024.7

August 13, 2024
  • FixedIf the license key was not entered, the standalone ArmDot and ArmDotConsole unexpectedly stopped with the error "The ArmDot license is invalid".

Version 2024.6

June 26, 2024
  • FixedThe types, methods, and fields generated by ArmDot are now set as non-public.

Version 2024.5

June 24, 2024
  • AddedArmDot stops obfuscation if the license has expired.

Version 2024.4

June 17, 2024
  • AddedArmDot supports .NET 9.0.

Version 2024.3

May 31, 2024
  • FixedFixed errors in exception handling within obfuscated methods.
  • FixedIn some instances, ArmDot was unable to implement the feature integrity check for assemblies.

Version 2024.2

May 29, 2024
  • AddedAdded an experimental feature for integrity checking.

Version 2024.1

April 8, 2024
  • FixedResolved an issue where ArmDot was incorrectly virtualizing arrays of enums.

2023

Version 2023.12

October 3, 2023
  • FixedThe XamlC task encountered an error while attempting to process assemblies that were obfuscated by ArmDot.

Version 2023.11

July 19, 2023
  • AddedArmDot supports .NET 8.0.

Version 2023.10

May 10, 2023
  • FixedArmDot stopped working unexpectedly.

Version 2023.9

April 29, 2023
  • AddedImproved the string hiding algorithm.

Version 2023.8

April 25, 2023
  • FixedIn some cases, ArmDot incorrectly obfuscated the names of generic methods.

Version 2023.7

February 24, 2023
  • FixedIf a type had both ObfuscateNames and ObfuscationAttribute, ArmDot ignored the ObfuscationAttribute. For example, if the ObfuscationAttribute had settings such as Exclude = true and ApplyToMembers = false, and ArmDot.Client.ObfuscateNames(Enable = true, Inherit = true) was applied, the type would still be obfuscated.

Version 2023.6

February 21, 2023
  • FixedArmDot obfuscated the names of fields that were marked with the System.Runtime.Serialization.DataMemberAttribute.

Version 2023.5

February 9, 2023
  • FixedIf virtualization was not supported for a method, the remaining obfuscation options were not applied.

Version 2023.4

February 1, 2023
  • FixedIf an assembly's PDB was invalid, ArmDot would not obfuscate the assembly.

Version 2023.3

January 10, 2023
  • FixedIf a project that utilized the license API was targeting .NET 6.0, the project could not be built.

Version 2023.2

January 9, 2023
  • FixedSome virtualized methods may unexpectedly throw System.IndexOutOfRangeException.

Version 2023.1

January 5, 2023
  • FixedSometimes ArmDot failed to virtualize a method when name obfuscation was enabled.

2022

Version 2022.21

December 28, 2022
  • AddedSometimes ArmDot failed to obfuscate an application with a target framework of .NET 4.8.1.

Version 2022.20

December 28, 2022
  • AddedArmDot now supports .NET 4.8.1.

Version 2022.19

December 16, 2022
  • AddedSometimes ArmDot would fail to virtualize methods.

Version 2022.18

December 2, 2022
  • AddedArmDot would fail when attempting to virtualize a method without a body.

Version 2022.17

November 29, 2022
  • AddedArmDot now supports .NET 7.0.

Version 2022.16

November 28, 2022
  • FixedArmDot now displays a clear error message if the file to be embedded does not exist.

Version 2022.15

November 18, 2022
  • FixedException handlers were being called in the wrong order after virtualization or control flow obfuscation.

Version 2022.14

October 24, 2022
  • FixedVisual Studio might hang when loading a project with the ArmDot obfuscator task.

Version 2022.13

September 20, 2022
  • FixedArmDot may fail to virtualize .NET 6 WPF applications.

Version 2022.12

September 20, 2022
  • FixedImproved compatibility with Mono.

Version 2022.11

September 13, 2022
  • FixedSometimes ArmDot UI failed to load obfuscation options for methods and types.

Version 2022.10

September 12, 2022
  • AddedArmDot encrypts global string literals when the 'hide string' option is enabled.

Version 2022.9

September 5, 2022
  • AddedArmDot.Engine.MSBuildTasks.ObfuscateTask supports generating map files for deobfuscating stack traces.

Version 2022.8

September 5, 2022
  • AddedArmDot generates map files for deobfuscating stack traces.

Version 2022.7

June 6, 2022
  • FixedArmDot failed to run on Linux when a .NET version newer than 3.0 was installed.

Version 2022.6

April 28, 2022
  • FixedBlazor assemblies may fail to run after obfuscation in .NET 6.

Version 2022.5

April 7, 2022
  • FixedArmDot may fail to virtualize certain methods with generics.

Version 2022.4

April 6, 2022
  • AddedNew parameter, SkipAlreadyObfuscatedAssemblies, added to ArmDot.Engine.MSBuildTasks.ObfuscateTask.

Version 2022.3

April 3, 2022
  • FixedApplications targeting .NET Framework 4.8 may crash upon startup.

Version 2022.2

March 11, 2022
  • FixedIn certain cases, ArmDot failed to virtualize a method when it had an exception filter.

Version 2022.1

January 10, 2022
  • AddedExecutables obfuscated by ArmDot no longer display a nag screen.

2021

Version 2021.22

December 14, 2021
  • AddedThe ArmDot UI allows you to set any obfuscation options for items.

Version 2021.21

December 2, 2021
  • FixedArmDot incorrectly processed assembly names specified in the InternalsVisibleToAttribute if they contained a dot.
  • FixedArmDotConsole only obfuscated the first assembly, despite multiple assemblies being specified.

Version 2021.20

December 1, 2021
  • FixedArmDot didn't utilize the type obfuscation options stored in a project.

Version 2021.19

November 30, 2021
  • AddedArmDot UI did not display obfuscation options for types.

Version 2021.18

November 26, 2021
  • AddedNew parameter, TreatAllWarningsAsErrors, added to ArmDot.Engine.MSBuildTasks.ObfuscateTask.

Version 2021.17

October 4, 2021
  • FixedIf embedded resource protection was enabled, some assemblies failed to run.

Version 2021.16

June 28, 2021
  • AddedArmDot supports .NET 6.0.

Version 2021.15

June 14, 2021
  • AddedArmDot obfuscates namespaces.

Version 2021.14

June 13, 2021
  • AddedNew parameter, LicenseFile, added to ArmDot.Engine.MSBuildTasks.ObfuscateTask.

Version 2021.13

June 7, 2021
  • FixedArmDot mistakenly renamed the protected methods.

Version 2021.12

April 9, 2021
  • AddedArmDot now provides support for assembly signing.

Version 2021.11

April 4, 2021
  • AddedArmDot may encounter difficulties in virtualizing certain methods within a UWP application.

Version 2021.10

March 29, 2021
  • AddedArmDot now offers support for obfuscating UWP applications.

Version 2021.9

March 22, 2021
  • FixedThe tasks from the NuGet package ArmDot.Engine.MSBuildTasks cannot be used when the project is built using 'dotnet build'.

Version 2021.8

March 19, 2021
  • FixedMono might fail to execute virtualized code when the original code used a value type from another assembly.
  • FixedArmDot virtualized a method that called an open generic method.

Version 2021.7

March 2, 2021
  • FixedFixed warnings related to the ArmDot NuGet packages by embedding the icon and license into the packages.

Version 2021.6

February 1, 2021
  • FixedFixed an issue where the virtualized code of a method was incorrect when its declaring type was an open generic type.

Version 2021.5

January 29, 2021
  • FixedArmDot will no longer virtualize a method if it uses a field with an open generic type.

Version 2021.4

January 22, 2021
  • FixedArmDot now excludes the virtualization of a method if it contains an unused variable of an open generic type.
  • FixedArmDot previously did not virtualize a method if it contained an unused parameter of an open generic type.

Version 2021.3

January 15, 2021
  • FixedArmDot mistakenly virtualized a method containing a variable of an open generic type, despite virtualization not being supported in such cases.

Version 2021.2

January 12, 2021
  • FixedArmDot incorrectly virtualized a method when it included a parameter of an open generic type, even though virtualization is not supported in such cases.
  • FixedArmDotConsole encountered an issue where it would not correctly write the obfuscated assembly if a relative path was specified using the --output-assembly option.

Version 2021.1

January 6, 2021
  • FixedThe virtualized code produced an incorrect result when the original code used brtrue/brfalse with an object reference.

2020

Version 2020.38

December 24, 2020
  • FixedThe ArmDot licensing API failed to verify a license key if an empty hardware ID was provided.

Version 2020.37

December 23, 2020
  • FixedThe virtualized code was behaving incorrectly when the original code contained constrained/callvirt operations.

Version 2020.36

December 21, 2020
  • FixedIf a Xamarin application is virtualized by ArmDot, Visual Studio might encounter deployment issues when trying to deploy the application to an Android device.

Version 2020.35

December 17, 2020
  • FixedWhen archiving a Xamarin project in Visual Studio, there is a possibility that ArmDot.Engine.MSBuildTasks.ObfuscateTask might crash.

Version 2020.34

December 15, 2020
  • FixedIn certain scenarios, ArmDot failed to virtualize a method.

Version 2020.33

December 14, 2020
  • FixedIncreased speed of method virtualization.

Version 2020.32

December 9, 2020
  • AddedArmDotConsole and ArmDot.Engine.MSBuildTasks.ObfuscateTask now support reference paths.

Version 2020.31

December 4, 2020
  • FixedIn certain cases, ArmDot was unable to obfuscate the control flow of a method.
  • AddedThe ArmDot.Client.Dll assembly is now strong-named.

Version 2020.30

November 20, 2020
  • FixedArmDot removed an ObfuscationAttribute, even if it was unknown to ArmDot.

Version 2020.29

November 16, 2020
  • AddedAdded a new property NoWarn to ArmDot.Engine.MSBuildTasks.ObfuscateTask.

Version 2020.28

November 13, 2020
  • AddedAdded support for .NET 5.

Version 2020.27

November 3, 2020
  • FixedFailed to add ArmDot.Engine.MSBuildTasks.ObfuscateTask to the project.

Version 2020.26

November 3, 2020
  • AddedIntroduced a new property, EmbeddedFiles, in ArmDot.Engine.MSBuildTasks.ObfuscateTask.

Version 2020.25

October 27, 2020
  • AddedArmDot now logs information about embedded files in the build log.

Version 2020.24

October 26, 2020
  • FixedThe EmbedFileAttribute can now be applied multiple times.

Version 2020.23

October 19, 2020
  • AddedArmDot now supports virtualization of methods that return instantiated generic types.

Version 2020.22

October 2, 2020
  • AddedArmDotConsole now supports obfuscation without requiring a project file.

Version 2020.21

September 20, 2020
  • AddedBy default, ArmDot now writes the obfuscated assembly to the same file.

Version 2020.20

September 17, 2020
  • FixedFixed an issue where name obfuscation would sometimes fail.

Version 2020.19

September 1, 2020
  • AddedAdded support for Xamarin.

Version 2020.18

August 7, 2020
  • FixedImproved obfuscation speed.

Version 2020.17

July 31, 2020
  • FixedResolved issue where a virtualized method would occasionally crash when attempting to execute a 'switch' instruction.

Version 2020.16

July 27, 2020
  • FixedAddressed an issue where ArmDot occasionally failed to virtualize a method that included the 'starg' instruction.

Version 2020.15

July 21, 2020
  • FixedResolved a crash issue in virtualized code occurring when calling generic methods.
  • FixedWhen name obfuscation was enabled, the build log displayed new names instead of the original ones.

Version 2020.14

July 16, 2020
  • AddedArmDotConsole now displays an error message if either the user data or hardware ID is incorrect.
  • FixedResolved a crash issue in ArmDotConsole that occurred when the hardware ID was not passed.

Version 2020.13

July 16, 2020
  • AddedIntroduced a new property, ProjectPath, to the ArmDot.Engine.MSBuildTasks.ObfuscateTask.

Version 2020.12

July 10, 2020
  • FixedResolved an issue where embedded files failed to run on .NET 4.7.2.

Version 2020.11

July 7, 2020
  • AddedAdded a NuGet package for ArmDot.Client.

Version 2020.10

July 6, 2020
  • AddedAdded a .NET Core version of ArmDot that is compatible with Linux and macOS operating systems.
  • FixedResolved the issue where ArmDot was unable to locate certain types from the installed .NET Core runtimes.

Version 2020.9

June 29, 2020
  • FixedFixed the issue where if certain obfuscation options could not be applied to a method, the method was skipped and obfuscation continued.

Version 2020.8

June 28, 2020
  • FixedResolved an issue where the ArmDot UI occasionally failed to display protection options for items.

Version 2020.7

June 26, 2020
  • FixedAddressed an issue where ArmDot would occasionally generate incorrect code for a virtualized method that contained "endfinally".

Version 2020.6

June 22, 2020
  • AddedIntroduced new attributes: EmbedFileAttribute, HideStringsAttribute, ObfuscateControlFlowAttribute, ObfuscateNamesAttribute, and ProtectEmbeddedResourcesAttribute.
  • FixedCorrected issue where ObfuscationAttribute was not removed even when StripAfterObfuscation was set to true.
  • FixedAddressed problem where a virtualized method would pass an incorrect value when calling a method with a System.Single parameter.

Version 2020.5

May 30, 2020
  • AddedThe UI now supports nested types display.
  • FixedAddressed an issue where ArmDot failed to remove the VirtualizeCodeAttribute attribute from certain methods.
  • FixedResolved the problem of incorrect saving and loading of paths for embedded files (using full paths instead of relative paths to the project root).

Version 2020.4

May 25, 2020
  • AddedAdded support for .NET Core and .NET Standard.

Version 2020.3

May 11, 2020
  • AddedEnhanced the speed of virtualized methods.

Version 2020.2

February 7, 2020
  • FixedAn issue where an application with protected resources could crash under .NET 2.0.

Version 2020.1

February 5, 2020
  • AddedImplemented a control flow obfuscation feature.

2019

Version 2019.12

December 4, 2019
  • AddedImplemented name obfuscation feature.

Version 2019.11

September 27, 2019
  • FixedWhen a method threw an exception during virtualization, an exception of incorrect type was thrown.

Version 2019.10

August 8, 2019
  • FixedProtected WPF applications might fail to locate resources if they were protected by ArmDot.

Version 2019.9

August 1, 2019
  • FixedProtected code execution might have caused an InvalidProgramException.

Version 2019.8

July 19, 2019
  • AddedArmDot now supports embedded resource protection.

Version 2019.7

May 28, 2019
  • FixedArmDot might fail to protect an assembly if it references old versions of ArmDot.Client.dll.

Version 2019.6

May 26, 2019
  • FixedArmDot threw an exception when the user switched to Files.

Version 2019.5

May 9, 2019
  • AddedArmDot now utilizes the source assembly directory for resolving dependencies.

Version 2019.4

April 7, 2019
  • AddedArmDot now supports locking the license key to the hardware.

Version 2019.3

March 10, 2019
  • FixedArmDot would sometimes encounter processing errors when "Encrypt strings in all methods" was enabled for the entire assembly and the assembly included a PInvoke method.

Version 2019.2

February 26, 2019
  • FixedArmDot previously had a potential issue where it might fail to generate a PDB file for a protected assembly. This issue has been resolved.

Version 2019.1

January 28, 2019
  • FixedArmDot now correctly shows assemblies when a project is loaded from the Windows Explorer.
  • AddedImproved protection capabilities.

2018

Version 2018.10

December 26, 2018
  • AddedAdded the option for string encryption.

Version 2018.9

December 12, 2018
  • FixedResolved an issue where ArmDot failed to process an assembly if its corresponding PDB file was not found.

Version 2018.8

November 28, 2018
  • AddedUpdated the documentation.

Version 2018.7

November 5, 2018
  • AddedEmbedded file content is now hidden.
  • FixedFixed an issue where ArmDot would crash if a user selected two licenses and then deleted them.

Version 2018.6

November 3, 2018
  • AddedFixed a potential crash issue in the protected executable.

Version 2018.5

October 29, 2018
  • AddedAdded support for embedded files.

Version 2018.4

October 23, 2018
  • AddedAdded expiration date, maximum build date, and user data to license information.

Version 2018.3

October 14, 2018
  • AddedImproved string encryption.

Version 2018.2

October 14, 2018
  • AddedAdded keygens for C/C++ and PHP.

Version 2018.1

September 12, 2018
  • AddedInitial release.