PreEmptive Protection - Dotfuscator
Community Edition User Guide

Check Telemetry

Checks can be configured to send messages to a specified PreEmptive Analytics Endpoint when they detect invalid application states. This is called Check Telemetry.


Provided you have configured Checks, Check Telemetry can be used alongside other features of Instrumentation or by itself.

In both cases, to enable Check Telemetry, enable one or more of the following injection options:

Note that Checks in general will only be injected if Enable injection is enabled, so this setting must also be enabled for Check Telemetry messages to be transmitted.

Caution: Do not put the Check attributes on the same method containing the SetupAttribute. Methods with these attributes must be executed after the method containing the Setup Attribute.

With Instrumentation Telemetry

Assuming you have configured your application to track sessions, Check Telemetry messages will be sent as part of those sessions. Because these messages indicate unauthorized use of the application, they will be transmitted even if the user opts out of telemetry.

Without Instrumentation Telemetry

Check Telemetry can be used without transmitting any other telemetry. To do this, disable the Send application analytics messages injection option.

However, Check Telemetry still requires the injected telemetry engine to be set up, so that it knows where to transmit the messages, and what Company and Application information to include in the transmission. Therefore, use of the following instrumentation attributes is still required for Check Telemetry, even though the code they inject will not transmit these attributes' corresponding messages:

Supported Application Types

Check Telemetry is supported in an assembly if:

  1. Instrumentation is supported for that assembly, and
  2. The Check is supported for that assembly:


Each type of Check generates a different type of message.


Generated when a method annotated with TamperCheckAttribute starts and the injected Tamper Check detects that the assembly has been modified from its original form.

Includes the following data:

  • Session ID
  • Timestamp

Debugger Detected (Fault)

Generated when a method annotated with DebuggingCheckAttribute starts and the injected Debugging Check detects that a debugger is attached to the current process.

This is actually a fault message with a fixed exception type (com.preemptive.DebuggingCheck).

Includes the following data:

  • Session ID
  • Timestamp

Application Expiry

Generated when a method annotated with ShelfLifeCheckAttribute starts and the injected Shelf Life Check detects that the application is being used after the Check's expiration date.

Includes the following data:

Dotfuscator Version Copyright © 2017 PreEmptive Solutions, LLC