Detector
The AntiCheat system is built on four pillars: Protection, Monitoring, Detection and Punishment.
- Protection: To protect against cheaters and hackers, encrypt or obfuscate your data so that it is protected against attacks. Countermeasures are taken to protect the integrity of the data and trap attackers, for example through honey pots.
- Monitoring: Observe and track the state of the game or device and the behavior of players to detect potential cheating or unusual behavior.
- Detection: Monitoring itself does not report cheating activity, but only tracks the state of the game or device and monitors deviations. These deviations are recorded by a detector. The detector itself checks the monitored deviations and informs the 'AntiCheat-Monitor' about possible cases of tampering or cheating.
- Punishment: React to detected cheating attempts with punishers when a calculated threat level is reached and can impose various penalties.
Detection
AntiCheat uses so called 'Detectors' to subscribe to 'Monitors'. It collects the received data and checks it for possible cheating attempts, such as manipulated memories or changes to the game or device time and more. A detector is a MonoBehaviour attached to the 'AntiCheat-Monitor'. It subscribes to the also attached monitors and decides if any possible cheating occured.
A detector is also an observable. Once a possible cheating or tampering got detected, all observers get notified. Very first this will be the 'AntiCheat-Monitor' itself which subscribes to all attached detectors.
Example: The 'AntiCheat-Monitor' lists all attached detectors.
Built-In
There are several built-in detectors that can be used universally across all devices and there are device specifications.
Universal Detectors
The following detectors are built-in in the AntiCheat package and can be used across all devices:
Detector - Universal | Free | Pro |
---|---|---|
PrimitiveCheatingDetector | + | + |
GameTimeCheatingDetector | + | |
DeviceTimeCheatingDetector | + |
A brief overview over the universal detectors:
PrimitiveCheatingDetector: This detector is used to detect unexpected value modifications of protected types, commonly done through memory manipulation / cheating.
GameTimeCheatingDetector: This detector is used to detect game time (UnityEngine.Time) cheating. It observes the game time monitor and subscribes to time deviations, based on this it calculates the possibility of cheating and notifies observers of the detected cheating. Additionally, it starts doing counter measures by calculating the game time based on system ticks, if a cheating got detected. So even if cheated, the game time will be calculated correctly and provided in the ProtectedTime class.
DeviceTimeCheatingDetector: This detector is used to detect device or system time manipulation. It observes the device time monitor and subscribes to time deviations, based on this it calculates the possibility of cheating and notifies observers of the detected cheating. It also provides a trustworthy DateTime.UtcNow either calculated based on the internet time or device time, provided in the ProtectedTime class.
Mobile Detectors
The following detectors are built-in in the AntiCheat package and are designed for mobile (Android and iOS) devices:
Detector - Mobile | Free | Pro |
---|---|---|
MobileGenuineDetector | + | + |
A brief overview over the mobile detectors:
- MobileGenuineDetector: This detector is used to detect if the build mobile app or package is genuine, i.e. if it is not modified or tampered with.
Android Detectors
The following detectors are built-in in the AntiCheat package and are designed for Android devices:
Detector - Android | Free | Pro |
---|---|---|
AndroidPackageTamperingDetector | + | |
AndroidDeviceCheatingDetector | + |
A brief overview over the Android detectors:
AndroidPackageTamperingDetector: An aggregated detector that is used to detect if the Android package (APK/AAB) is tampered with. It subscribes to the following monitors 'AndroidPackageSourceMonitor', 'AndroidPackageHashMonitor', 'AndroidPackageFingerprintMonitor' and 'AndroidPackageLibraryMonitor'.
AndroidDeviceCheatingDetector: This detector is used to detect if the Android device has unallowed applications installed which can be used to cheat in the game.