Anti-Cheat Toolkit  2024.3.0
Multi-purpose anti-cheat solution for Unity Engine
InjectionDetector Class Reference

Inherits ACTkDetectorBase< InjectionDetector >.

Public Member Functions

void TriggerDetection ()
 

Static Public Member Functions

static InjectionDetector AddToSceneOrGetExisting ()
 
static InjectionDetector StartDetection ()
 
static InjectionDetector StartDetection (InjectionDetectedEventHandler callback)
 
static void StopDetection ()
 
static void Dispose ()
 

Public Attributes

bool autoStart
 
bool autoDispose
 

Properties

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

Events

new InjectionDetectedEventHandler CheatDetected
 

Detailed Description

Allows to detect foreign managed assemblies in your application.

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.

NOTE #1: Make sure you've checked the "Enable Injection Detector" option at the "Window > Code Stage > Anti-Cheat Toolkit > Settings" window before using detector at runtime.
NOTE #2: Always test detector on the target platform before releasing your application to the public.
It may detect some external assemblies as foreign, thus make sure you've added all external assemblies your application uses to the Whitelist (see section "How to fill user-defined Whitelist" of the read me for details).
NOTE #3: Disabled in Editor because of specific assemblies causing false positives. Use ACTK_INJECTION_DEBUG symbol to force it in Editor.

WARNING: Only Standalone and Android platforms are supported.

Member Function Documentation

◆ AddToSceneOrGetExisting()

static InjectionDetector 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 InjectionDetector StartDetection ( )
inlinestatic

Starts foreign assemblies injection 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 InjectionDetector StartDetection ( InjectionDetectedEventHandler  callback)
inlinestatic

Starts foreign assemblies injection detection with specified callback containing string argument.
Assembly name will be passed to the argument if possible. Otherwise another cause of the detection will be passed.

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

◆ 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

◆ 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

new InjectionDetectedEventHandler CheatDetected

Subscribe to this event to get notified when cheat will be detected. The detection cause will be passed as an argument if possible.