[RELEASED v2025.1.1] AntiCheat - Protect your game against cheaters!

AntiCheat is developed for you, to keep your game safe. In the world of video games, cheating is unfortunately still widespread, with individuals using various methods to gain an advantage over other players. These include the use of mods, hacks or exploits that give an unfair advantage. Be it single- or multiplayer games.

As a client-side solution, AntiCheat protects your game memory, storage, time and detects and prevents tampering attempts. It ensures the integrity of the gaming experience for you and your honest players.

PROTECTED MEMORY

Important data such as scores, positions or health are usually stored in the runtime memory, which can be vulnerable to manipulation by cheaters. AntiCheat offers protected data types to recognize, prevent and react to those memory manipulation attempts.

  • Primitives: Protected data type for all primitives. This includes value types like int, float, string, … and all Unity value types like Vector, Quaternion, …

  • Collections: Added protected versions for commonly used collections such as List, Queue and Stack.

  • Data- & BlockChain: Introduced data chain classes to maintain remote synchronized ordered data while preserving its integrity.

PROTECTED PLAYER PREFS

Unity’s PlayerPrefs offer a simple way to save user preferences and data, but they don’t provide any security or encryption, making them vulnerable to unwanted modifications. AntiCheat protected PlayerPrefs are designed to address this security issue.

  • Protected PlayerPrefs: Protected implementation of Unity’s PlayerPrefs to store encrypted data in the local registry.

  • Protected File Based PlayerPrefs: File based alternative to store Unity’s PlayerPrefs encrypted in a file of your choice.

PROTECTED TIME

Time, whether in real time or as game time, is crucial in every game. However, it is often manipulated by cheaters by speeding up or slowing down the speed of the game or changing the device’s clock. AntiCheat addresses these problems by providing a solution that safeguards against time-based manipulations.

  • Protected Game Time: Protected and reliable versions of deltaTime, fixedDeltaTime and all other Unity Time class properties.

  • Protected Device Time: Watch the player’s device time and use a trusted UTC DateTime to ensure the integrity of your game.

PROTECT YOUR MOBILE GAME

Mobile apps are often targets for unauthorized redistribution, with cheaters modifying them to gain advantages, bypass payment systems or even rebranding and republishing them. But AntiCheat helps you to stop that!

Android:

  • Validate Installation Source: Validate the installation source, to check whether your app was installed by an official app stores and not by third parties.

  • Validate Hash: Validate the entire app hash to determine whether the app has been modified in any way. Be it changed code or other resources.

  • Validate Certificate Fingerprint: Validate your apps certificate fingerprint to make sure the app is shipped by you and no one else.

  • Validate Libraries: A common cheat method in Unity Android apps is to insert custom libraries into your app instead of modifying the existing code. Validate against whitelisted and blacklisted libraries.

  • Validate Installed Apps: Not only can a user modify or manipulate your game or app, but they can also try to gain an advantage by making changes to their device. Validate the installed apps!

iOS + Android:

  • Validate Package Name: Validate the package name of the shipped app and make sure it is your app and not a rebranding.

WHY ANTICHEAT

  • Proven Quality: Thousands of developers have relied on AntiCheat for nearly a decade as a comprehensive game security solution.

  • Lifetime Access: As one-time purchase solution you have access to all features and future updates.

  • Source Code: The package includes the full C# source code, allowing developers to easily customize and adapt to their specific requirements.

  • Developed For You: Designed with developers in mind, ensuring you will get all the support you need.

DOCUMENTATION

AntiCheat is packed with plenty of manuals, scripting API reference docs, and demos, enabling you to dive straight into coding!

Documentation and Scripting Api Reference

PLATFORMS

All platforms Unity supports. Includes Mono and IL2CPP.

CONTACT

From developers for developers since 2017! If you have any questions feel free to ask.

Contact: guardingpearsoftware@gmail.com
Website: guardingpearsoftware.com

I strongly advise against taking punishing actions against cheaters!

Time and time again it has proven to backfire on the few game developers who actually implemented this sort of ingame punishments for cheating or piracy.

This will quickly lead to bad reviews of the game, stating that the game is “totally bugged” or has “terrible performance”. This naturally hurts sales. Most users reading such reviews will not be aware of these being anti-cheat punishment measures. And some of these complaints may be from non-cheating users due to anticheat measures detecting false positives.

For online games, the appropriate action is to fix the critical exploits used by cheaters. For entirely offline games, cheating is of no concern to begin with.

1 Like

Thank you for your feedback. That’s a very interesting topic, do you have some resources you could share?

My memory. :slight_smile:

Most of these are antipiracy measures actually, and they used to require careful monitoring of the game forums where users reporting these issues got outright banned. Ubisoft is famous for that. But for some users the protection mechanism failed - then they had no way to raise public complaints other than going to the press (these days they take it to Youtube etc).

Ever since we have digital distribution platforms, developers and publishers can no longer (easily) moderate users leaving bad reviews so such punishing measures fell even more out of favor, and there was only a handful implementations to begin with. Settlers had a famous antipiracy that made smelters produce pigs in place of iron ingots. Far Cry 4 modified the FOV.

Modern games? Take a look at negative steam reviews for GTA V. A lot of them are about having been banned for no apparent reason. Some are getting banned because they supposedly only used singleplayer mods. All the while the remaining negative reviews are largely about online cheaters and modders. So there’s a cat and mouse fight going and as always, there’s innocent bystanders getting hurt in the process because at that scale you can only automate bans.

My point being: if you have online cheaters, they should get banned. That’s the only appropriate punishment. Offline cheaters should not get punished. They don’t affect anyone else, or at most their splitscreen peers who can implement their own punishing measures. :wink:

Valid points, thank you. I will consider them in the documentation.

@GuardingPearSoftware

Does it work with ECS?

I did not work with the Entity Component System so far, but I see no problem why it should not work.

Release of 2024.2: Datachain & Collection - Update

  • QoL: Unity events can now also be attached to detectors via the inspector in order to react to cheating events.
  • Feature (Pro): ProtectedList - A protected list is similar to the normal generic list you would use, with the special feature that its integrity is checked.
  • Feature (Pro): ProtectedQueue - A protected queue is similar to the normal generic queue you would use, with the special feature that its integrity is checked.
  • Feature (Pro): ProtectedStack - A protected stack is similar to the normal generic stack you would use, with the special feature that its integrity is checked.
  • Feature (Pro): Datachain - A datachain is similar to a linked list consisting of a sequence of elements arranged in a specific order. It is used to maintain the order of these elements while keeping its integrity.

Release of 2024.2.1: Support of Unity 2019 & 2020

  • Support: Supports now Unity 2019 and 2020.
  • Feature (Pro): Blockchain: A blockchain class has been introduced that inherits from a datachain that can be synchronized with a remote source.

Important release of 2024.2.2: Protected Player Prefs - Fix

  • Fix: Protected Player Prefs had an issue throwing detected cheating when reading from Protected Player Prefs.

Release of 2024.3: Android Security Update

After two months of development, it’s finally here: the Android Security update! Packed with numerous security features for your Android apps, it ensures your mobile gaming experience is safer than ever before.

Frequently mobile apps become targets for unauthorized redistribution, whether by disabling Digital Rights Management (DRM), modifying the app, bypassing payment methods, or rebranding it under a different name. This is a major problem for developers. That’s why AntiCheat introduces new features that secure your mobile Android apps!

Android:

  • Feature (Pro): Validate Installation Source - Validate the installation source, to check whether your app was installed by an official app stores and not by third parties.

  • Feature (Pro): Validate Hash - Validate the entire app hash to determine whether the app has been modified in any way. Be it a different package name or changed code or other resources.

  • Feature (Pro): Validate Certificate Fingerprint - Validate your apps certificate fingerprint to make sure the app is shipped by you and no one else.

  • Feature (Pro): Validate Libraries - A common cheat method in Unity Android apps is to insert custom libraries into your app instead of modifying the existing code. Validate against whitelisted and blacklisted libraries.

  • Feature (Pro): Validate Installed Apps - Not only can a user modify or manipulate your game or app, but they can also try to gain an advantage by making changes to their device. Validate the installed apps!

iOS + Android:

  • Feature: Validate Package Name - Validate the package name of the shipped app and make sure it is your app and not a rebranding.

Release of 2024.3.1: Protected Primitives - Fix

  • Fix: Protected Primitives without any assigned values, threw a detection event on access (like .ToString()).

Release of 2024.3.2: Protected UTC Time - Fix

  • Fix: On some Android devices, the ProtectedTime.UtcNow was not updated correctly after closing (moving to the background) and reopening the app. The time continued at the time of closing.

Release of 2024.4: Android Security Update - Patch

  • Patch: Validate Installed Apps - Starting with Android 11 (API Level 30), Google introduced package visibility changes that restrict the ability to query all installed packages. While the ‘QUERY_ALL_PACKAGES’ permission exists (), its use requires explicit justification to Google and may be rejected during app review. With this patch, the packages on the blacklist are queried instead of querying all packages. This approach requires these packages to be added to the Android Manifest, but this is done automatically by AntiCheat.

Release of AntiCheat 2025.1: Official release of AntiCheat 2025

We are excited to announce the official release of AntiCheat 2025.1, packed with new features and improvements to enhance your security and development experience!

Key Highlights:

  • Unity 6 (6000) Support: AntiCheat 2025 is now fully compatible with Unity 6, ensuring smooth integration with the latest Unity version.

  • Complete Rewrite of Protected PlayerPrefs: We’ve completely rewritten the protected PlayerPrefs system, significantly boosting security and making it even more user-friendly. The new protected PlayerPrefs code now resides in the GUPS.AntiCheat.Protected.Storage.Prefs namespace.

Important: This update is not compatible with the approach used in AntiCheat 2024 and earlier versions. We recommend using AntiCheat 2025+ for new projects or projects that have not yet been released. Else continue with AntiCheat 2024.

What’s New in Protected PlayerPrefs:

  1. Expanded Data Type Support:

AntiCheat 2025 now supports a broader range of data types, including:

  • Byte, Byte Array, Boolean, Int16, Int32, Int64, UInt16, UInt32, UInt64
  • Single, Double, Decimal, Char, String
  • Color, Color32, Vector2, Vector2Int, Vector3, Vector3Int, Vector4
  • Quaternion, Rect, Plane, Ray, Matrix4x4
  1. New PlayerPrefs Settings:

Customize your PlayerPrefs protection with several new settings available in the Player Settings (Project Settings → GuardingPearSoftware → AntiCheat).

  • Hash Key:
    Option to hash the PlayerPrefs key (default or file-based). When enabled, the key is stored as a hashed version instead of the original name.
    Recommended: True.

  • Value Encryption Key:
    Set a key to encrypt the PlayerPrefs value (default or file-based). If no key is set, the value remains unencrypted.
    Note: Changing this key will make previously stored values unreadable.
    Recommended: Yes.

  • Allow Read Any Owner:
    Enable this option to allow any user to read the stored PlayerPrefs (default or file-based), facilitating sharing between users. Disable it to restrict access to the device that originally created the PlayerPrefs, using the device’s unique identifier (UnityEngine.SystemInfo.deviceUniqueIdentifier).
    Recommended: Optional.

  • Verify Integrity:
    Enable verification of PlayerPrefs integrity to ensure data consistency. The integrity is checked using a hash calculated from the data type, value, and owner, and stored as a signature alongside the data.
    Recommended: Optional.

*Note:
:white_check_mark: For New or Unreleased Projects: Use AntiCheat 2025 for optimal compatibility and security.
:x: For Active Projects: Continue using AntiCheat 2024 to maintain stability, if you already use it.

1 Like

Release of 2025.1.1: Release Day - Patch
Bug Fixes:

  • [Bug-2025-1] For the default ProtectedFileBasedPlayerPrefs path, the “PathSeparator” got used instead of “DirectorySeparatorChar”. Resulting in a “wrong” file path.

Internal:

  • [Intern-2025-1] Corrected and optimized some tests.

Release of f2025.1.2: Minor Fixes

Bug Fixes:

  • [Bug-2025-2] Primitives such as int, float, double, etc. return with false for the HasIntegrity property if no value has yet been set. [thanks David]

  • [Bug-2025-3] The Android monitors have not disposed the Java callbacks. This could lead to memory leaks. [thanks David]