A Debugging Check is a type of Check that detects if a debugger is attached to the application.
For example, if an attacker launches the application in a debugger in order to reverse engineer the application or extract or manipulate sensitive data, a Debugging Check can detect the debugger and react by sending incident telemetry, notifying the application, and hindering the attacker. In other words, a Debugging Check detects and reacts to unauthorized debugging of your application.
Configuring Debugging Checks
To have Dotfuscator inject Debugging Checks into your application, first enable code injection.
Then, configure the Checks in the Config Editor, or by annotating your source code with
Both of these methods allow you to specify various properties that determine how the Check operates; for a full listing, see the
DebuggingCheckAttribute section of the Check Attributes page.
Unsupported Application Types
Dotfuscator can inject Debugging Checks into all .NET assemblies except for the following:
- .NET Core assemblies
- When using the "Exit" Action, Silverlight assemblies that do not target Windows Phone 8 or 8.1
- Unity assemblies
- Xamarin assemblies
To test how the Debugging Checks injected into your application react to a debugger's presence, run the protected application and attach to it with a debugger, such as Visual Studio, MDbg, or WinDbg. Exercise the locations of your Debugging Checks to observe how the application reacts to being run in a debugger.