Anti-Cheat Toolkit  2023.2.6
Multi-purpose anti-cheat solution for Unity Engine
ObscuredCheatingDetector Class Reference

Inherits ACTkDetectorBase< ObscuredCheatingDetector >.

Public Member Functions

void TriggerDetection ()
 

Static Public Member Functions

static ObscuredCheatingDetector AddToSceneOrGetExisting ()
 
static ObscuredCheatingDetector StartDetection ()
 
static ObscuredCheatingDetector StartDetection (Action callback)
 
static void StopDetection ()
 
static void Dispose ()
 

Public Attributes

double doubleEpsilon = 0.0001d
 
float floatEpsilon = 0.0001f
 
float vector2Epsilon = 0.1f
 
float vector3Epsilon = 0.1f
 
float quaternionEpsilon = 0.1f
 
bool autoStart
 
bool autoDispose
 

Properties

ObscuredCheatingDetectionInfo LastDetectionInfo [get]
 
bool IsCheatDetected [get, protected set]
 
bool IsStarted [get, protected set]
 
bool IsRunning [get, protected set]
 

Events

Action CheatDetected
 

Detailed Description

Detects CodeStage.AntiCheat.ObscuredTypes cheating.

It allows cheaters to find desired (fake) values in memory and change them, keeping original values secure.
It's like a cheese in the mouse trap - cheater tries to change some obscured value and get caught on it.

Just add it to any GameObject as usual or through the "GameObject > Create Other > Code Stage > Anti-Cheat Toolkit" menu to get started.
You can use detector completely from inspector without writing any code except the actual reaction on cheating.

Avoid using detectors from code at the Awake phase.

Member Function Documentation

◆ AddToSceneOrGetExisting()

static ObscuredCheatingDetector AddToSceneOrGetExisting ( )
inlinestatic

Creates new instance of the detector at scene if it doesn't exists. Make sure to call NOT from Awake phase.

Returns
New or existing instance of the detector.

◆ StartDetection() [1/2]

static ObscuredCheatingDetector StartDetection ( )
inlinestatic

Starts all Obscured types cheating detection for detector you have in scene.

Make sure you have properly configured detector in scene with autoStart disabled before using this method.

◆ StartDetection() [2/2]

static ObscuredCheatingDetector StartDetection ( Action  callback)
inlinestatic

Starts all Obscured types cheating detection with specified callback.

If you have detector in scene make sure it has empty Detection Event.
Creates a new detector instance if it doesn't exists in scene.

Parameters
callbackMethod to call after detection.

◆ StopDetection()

static void StopDetection ( )
inlinestatic

Stops detector. Detector's component remains in the scene. Use Dispose() to completely remove detector.

◆ Dispose()

static void Dispose ( )
inlinestatic

Stops and completely disposes detector component.

On dispose Detector follows 2 rules:

  • if Game Object's name is "Anti-Cheat Toolkit Detectors": it will be automatically destroyed if no other Detectors left attached regardless of any other components or children;
  • if Game Object's name is NOT "Anti-Cheat Toolkit Detectors": it will be automatically destroyed only if it has neither other components nor children attached;

◆ TriggerDetection()

void TriggerDetection ( )
inline

Manually triggers cheating detection and invokes assigned events.

Member Data Documentation

◆ doubleEpsilon

double doubleEpsilon = 0.0001d

Max allowed difference between encrypted and fake values in ObscuredDouble. Increase in case of false positives.

◆ floatEpsilon

float floatEpsilon = 0.0001f

Max allowed difference between encrypted and fake values in ObscuredFloat. Increase in case of false positives.

◆ vector2Epsilon

float vector2Epsilon = 0.1f

Max allowed difference between encrypted and fake values in ObscuredVector2. Increase in case of false positives.

◆ vector3Epsilon

float vector3Epsilon = 0.1f

Max allowed difference between encrypted and fake values in ObscuredVector3. Increase in case of false positives.

◆ quaternionEpsilon

float quaternionEpsilon = 0.1f

Max allowed difference between encrypted and fake values in ObscuredQuaternion. Increase in case of false positives.

◆ autoStart

bool autoStart
inherited

Allows to start detector automatically. Otherwise, you'll need to call StartDetection() method to start it.

Useful in conjunction with proper Detection Event configuration in the inspector. Allows to use detector without writing any code except the actual reaction on cheating.

◆ autoDispose

bool autoDispose
inherited

Detector component will be automatically disposed after firing callback if enabled. Otherwise, it will just stop internal processes.

On dispose Detector follows 2 rules:

  • if Game Object's name is "Anti-Cheat Toolkit": it will be automatically destroyed if no other Detectors left attached regardless of any other components or children;
  • if Game Object's name is NOT "Anti-Cheat Toolkit": it will be automatically destroyed only if it has neither other components nor children attached;

Property Documentation

◆ LastDetectionInfo

ObscuredCheatingDetectionInfo LastDetectionInfo
get

Holds detailed information about latest triggered detection.

Can be null if there were no detections or if detection was triggered manually.

◆ IsCheatDetected

bool IsCheatDetected
getprotected setinherited

Indicates if cheat was detected by this detector.

◆ IsStarted

bool IsStarted
getprotected setinherited

Allows to check if detector is started (stays true even when it's paused).

◆ IsRunning

bool IsRunning
getprotected setinherited

Allows to check if detection is currently running and not paused.

Event Documentation

◆ CheatDetected

Action CheatDetected
inherited

Subscribe to this event to get notified when cheat will be detected.