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 forms of Analytics 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 Process PreEmptive analytics attributes is enabled, so this setting must also be enabled for Check Telemetry messages to be transmitted.

With Analytics

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 Analytics.

Without Analytics

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

However, Check Telemetry still requires the injected Analytics 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 Analytics attributes is still required for Check Telemetry, even though the code they inject will not transmit Analytics:

Supported Application Types

Check Telemetry is supported in an assembly if:

  1. Analytics 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 InsertTamperCheckAttribute 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 Debug Check detects that a managed 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 InsertShelfLifeAttribute starts and the injected Shelf Life Check detects the application is being used after the Check's expiration date.

Includes the following data:

Dotfuscator Version Copyright © 2017 PreEmptive Solutions, LLC