Class GlobalSettings
Project-wide configuration asset for the anti-cheat system. Loaded as a singleton from RELATIVE_SETTINGS_PATH.
Inheritance
Namespace: GUPS.AntiCheat.Settings
Assembly: cs.temp.dll.dll
Syntax
public class GlobalSettings : ScriptableObject
Examples
Read the active settings asset at runtime:
using GUPS.AntiCheat.Settings;
var settings = GlobalSettings.Instance;
bool allowAnyOwner = settings.PlayerPreferences_Allow_Read_Any_Owner;
In the editor open Project Settings > GuardingPearSoftware > AntiCheat to edit the asset.
Fields
Android_AllowAllAppStores
When true, any package installation source is accepted; otherwise only sources listed in
Android_AllowedAppStores / Android_AllowedCustomAppStores.
Declaration
public bool Android_AllowAllAppStores
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Android_AllowedAppStores
Allowed well-known package installation sources. Installations from other sources raise a notification.
Declaration
public List<EAppStore> Android_AllowedAppStores
Field Value
| Type | Description |
|---|---|
| List<EAppStore> |
Android_AllowedCustomAppStores
Additional allowed installer package names (e.g. com.android.vending) for stores not covered by
Android_AllowedAppStores.
Declaration
public List<String> Android_AllowedCustomAppStores
Field Value
| Type | Description |
|---|---|
| List<String> |
Android_AppFingerprint
Expected app fingerprint used to verify the app's identity.
Declaration
public String Android_AppFingerprint
Field Value
| Type | Description |
|---|---|
| String |
Android_AppFingerprintAlgorithm
Hash algorithm used to compute and validate the app fingerprint. Recommended: SHA-256.
Declaration
public EHashAlgorithm Android_AppFingerprintAlgorithm
Field Value
| Type | Description |
|---|---|
| EHashAlgorithm |
Android_AppHashAlgorithm
Hash algorithm used to compute and verify the app hash. Recommended: SHA-256.
Declaration
public EHashAlgorithm Android_AppHashAlgorithm
Field Value
| Type | Description |
|---|---|
| EHashAlgorithm |
Android_AppHashEndpoint
HTTP GET endpoint that returns the expected app hash. May contain the {version} placeholder,
which is replaced with
Declaration
public String Android_AppHashEndpoint
Field Value
| Type | Description |
|---|---|
| String |
Android_BlacklistedApplications
Installed Android applications considered hostile; presence raises a notification.
Declaration
public List<String> Android_BlacklistedApplications
Field Value
| Type | Description |
|---|---|
| List<String> |
Android_BlacklistedLibraries
Libraries explicitly disallowed inside the application; any library in the list raises a notification.
Declaration
public List<String> Android_BlacklistedLibraries
Field Value
| Type | Description |
|---|---|
| List<String> |
Android_Enable_Development
When true, the Android app is validated (appstore, libraries, applications, signature, ...) also
on development builds. Recommended: false.
Declaration
public bool Android_Enable_Development
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Android_UseBlacklistingforApplication
When true, the device is scanned for blacklisted apps (see Android_BlacklistedApplications).
Declaration
public bool Android_UseBlacklistingforApplication
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Android_UseWhitelistingForLibraries
When true, enable whitelisting / blacklisting for loaded libraries; otherwise any library is allowed.
Declaration
public bool Android_UseWhitelistingForLibraries
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Android_VerifyAppFingerprint
When true, validate the app's signing fingerprint against Android_AppFingerprint.
Declaration
public bool Android_VerifyAppFingerprint
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Android_VerifyAppHash
When true, compare the running app's hash against a remote-hosted reference hash to detect
tampering or repackaging.
Declaration
public bool Android_VerifyAppHash
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Android_WhitelistedLibraries
Libraries explicitly allowed inside the application; any library not in the list raises a notification.
Declaration
public List<String> Android_WhitelistedLibraries
Field Value
| Type | Description |
|---|---|
| List<String> |
Desktop_Debugger_ReportManagedOnly
When true, raise a notification when only managed System.Diagnostics.Debugger.IsAttached
fires without a matching native debugger.
Declaration
public bool Desktop_Debugger_ReportManagedOnly
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Desktop_DetectKernelModeDebugger
When true, detect active kernel-mode debuggers (WinDbg kernel mode, Syser, SoftICE). Currently
effective only on Windows.
Declaration
public bool Desktop_DetectKernelModeDebugger
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Desktop_DetectModLoader
When true, scan for well-known mod loaders (BepInEx, MelonLoader, UnityDoorstop, ...) via
ModLoaderDetector.
Declaration
public bool Desktop_DetectModLoader
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Desktop_DetectUserModeDebugger
When true, detect attached user-mode debuggers (Visual Studio, Rider, dnSpy, x64dbg, OllyDbg,
ptrace, ...) via DebuggerDetector.
Declaration
public bool Desktop_DetectUserModeDebugger
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Desktop_DetectVirtualMachine
When true, detect virtual-machine environments (VirtualBox, VMware, Parallels, Hyper-V, ...) via
VirtualEnvironmentDetector.
Declaration
public bool Desktop_DetectVirtualMachine
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Desktop_Enable_Development
When true, desktop tampering detectors (mod loader, debugger, virtual environment) also run on
development builds and inside the Unity editor. Recommended: false.
Declaration
public bool Desktop_Enable_Development
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Desktop_ModLoader_AssemblyPrefixes
Case-insensitive managed-assembly name prefixes attributed to mod loaders. Remove entries you ship legitimately (e.g. HarmonyLib).
Declaration
public List<String> Desktop_ModLoader_AssemblyPrefixes
Field Value
| Type | Description |
|---|---|
| List<String> |
Desktop_ModLoader_FileNames
File or folder names attributed to mod loaders when found next to the game executable or loaded as a native module. Folders end with '/'.
Declaration
public List<String> Desktop_ModLoader_FileNames
Field Value
| Type | Description |
|---|---|
| List<String> |
Desktop_ModLoader_HijackDlls
DLL names that are legitimate Windows system libraries inside System32 but indicate Unity Doorstop hijacking (the bootstrap used by BepInEx / MelonLoader) when loaded from anywhere else, e.g. the game directory. These are never matched by name alone - the probe verifies the loading path first, so the System32 originals never raise a notification.
Declaration
public List<String> Desktop_ModLoader_HijackDlls
Field Value
| Type | Description |
|---|---|
| List<String> |
Desktop_VirtualMachine_BiosKeywords
Substrings indicating a virtual machine when found in BIOS / DMI / hardware model strings.
Declaration
public List<String> Desktop_VirtualMachine_BiosKeywords
Field Value
| Type | Description |
|---|---|
| List<String> |
Desktop_VirtualMachine_MacOuis
MAC address OUI prefixes (6 hex digits, no separators) attributed to known VM vendors,
e.g. 080027 for VirtualBox.
Declaration
public List<String> Desktop_VirtualMachine_MacOuis
Field Value
| Type | Description |
|---|---|
| List<String> |
Desktop_VirtualMachine_WindowsServiceKeys
Windows registry service keys (relative to HKEY_LOCAL_MACHINE) that only exist when virtual machine guest additions / guest tools are installed. Presence of any key raises a virtual machine notification. Only used by the Windows platform probe.
Declaration
public List<String> Desktop_VirtualMachine_WindowsServiceKeys
Field Value
| Type | Description |
|---|---|
| List<String> |
IOS_DetectDyldInjection
When true, inspect the DYLD_INSERT_LIBRARIES and DYLD_FORCE_FLAT_NAMESPACE
environment variables for runtime library injection. Entries matching one of the
IOS_DyldAllowedPrefixes are considered benign (Xcode debug support libraries).
Declaration
public bool IOS_DetectDyldInjection
Field Value
| Type | Description |
|---|---|
| System.Boolean |
IOS_DetectFork
When true, probe whether fork() returns a positive child PID. Opt-in (default false)
because static analysis from the App Store review pipeline can flag binaries that reference fork.
Declaration
public bool IOS_DetectFork
Field Value
| Type | Description |
|---|---|
| System.Boolean |
IOS_DetectSandboxViolation
When true, attempt to create a file outside the app sandbox. Sandboxed iOS apps cannot write
outside their container - a successful write indicates the sandbox is not enforced.
Declaration
public bool IOS_DetectSandboxViolation
Field Value
| Type | Description |
|---|---|
| System.Boolean |
IOS_DetectSuspiciousDylibs
When true, scan the loaded dyld images for the tweak framework substrings listed in
IOS_SuspiciousDylibs (MobileSubstrate, CydiaSubstrate, libsubstitute, libhooker,
FridaGadget, ...).
Declaration
public bool IOS_DetectSuspiciousDylibs
Field Value
| Type | Description |
|---|---|
| System.Boolean |
IOS_DetectSuspiciousPaths
When true, scan the IOS_SuspiciousPaths list (Cydia.app, /private/var/lib/apt,
/usr/sbin/sshd, /Library/MobileSubstrate, the rootless /var/jb prefix, ...) via stat().
Declaration
public bool IOS_DetectSuspiciousPaths
Field Value
| Type | Description |
|---|---|
| System.Boolean |
IOS_DetectUrlSchemes
When true, probe the jailbreak URL schemes listed in IOS_SuspiciousUrlSchemes
(cydia, sileo, zbra, filza, ...) via UIApplication.canOpenURL. Requires matching
LSApplicationQueriesSchemes entries in Info.plist - the iOS build post-processor injects
them automatically when this flag is on.
Declaration
public bool IOS_DetectUrlSchemes
Field Value
| Type | Description |
|---|---|
| System.Boolean |
IOS_DyldAllowedPrefixes
Trusted path prefixes (whitelist) for entries found in the DYLD_INSERT_LIBRARIES environment
variable. Entries starting with one of these prefixes are considered benign - Xcode injects Apple debug
support libraries (libViewDebuggerSupport, libMainThreadChecker, ...) from these read-only system
locations when running with the debugger attached. Every entry not matching a prefix raises a dyld
injection notification.
Declaration
public List<String> IOS_DyldAllowedPrefixes
Field Value
| Type | Description |
|---|---|
| List<String> |
IOS_Enable_Development
When true, the iOS jailbreak detector also runs on development builds and inside the Unity editor.
Recommended: false.
Declaration
public bool IOS_Enable_Development
Field Value
| Type | Description |
|---|---|
| System.Boolean |
IOS_SuspiciousDylibs
Dylib name substrings considered suspicious (blacklist). Compared case-insensitively against every loaded dyld image name. The list is passed to the native scanner; it contains no hidden built-in entries.
Declaration
public List<String> IOS_SuspiciousDylibs
Field Value
| Type | Description |
|---|---|
| List<String> |
IOS_SuspiciousPaths
Filesystem paths considered suspicious (blacklist), checked via stat(). Covers legacy
/Applications/* jailbreaks, MobileSubstrate, SSH leftovers, apt/cydia state, and the rootless (/var/jb)
layout used by Dopamine / palera1n. The list is passed to the native scanner; it contains no hidden
built-in entries.
Declaration
public List<String> IOS_SuspiciousPaths
Field Value
| Type | Description |
|---|---|
| List<String> |
IOS_SuspiciousUrlSchemes
URL schemes considered suspicious (blacklist), probed via UIApplication.canOpenURL. The iOS build
post-processor injects these entries into LSApplicationQueriesSchemes so the probe works on iOS 9+.
The list is passed to the native scanner; it contains no hidden built-in entries.
Declaration
public List<String> IOS_SuspiciousUrlSchemes
Field Value
| Type | Description |
|---|---|
| List<String> |
PlayerPreferences_Allow_Read_Any_Owner
When true, any user may read stored preferences; when false, only the original owner
(identified by
Declaration
public bool PlayerPreferences_Allow_Read_Any_Owner
Field Value
| Type | Description |
|---|---|
| System.Boolean |
PlayerPreferences_Hash_Key
When true, the player preference key is stored as a hash instead of its original name.
Declaration
public bool PlayerPreferences_Hash_Key
Field Value
| Type | Description |
|---|---|
| System.Boolean |
PlayerPreferences_Value_Encryption_Key
Encryption key applied to player preference values. Empty means values are stored unencrypted. Changing the key invalidates previously written values.
Declaration
public String PlayerPreferences_Value_Encryption_Key
Field Value
| Type | Description |
|---|---|
| String |
PlayerPreferences_Verify_Integrity
When true, player preferences are verified via a hash signature computed from data type, value and owner.
Declaration
public bool PlayerPreferences_Verify_Integrity
Field Value
| Type | Description |
|---|---|
| System.Boolean |
RELATIVE_SETTINGS_PATH
Resource path (relative, no extension) used by
Declaration
public const String RELATIVE_SETTINGS_PATH = null
Field Value
| Type | Description |
|---|---|
| String |
SETTINGS_PATH
Absolute project path to the settings asset (without .asset extension).
Declaration
public const String SETTINGS_PATH = null
Field Value
| Type | Description |
|---|---|
| String |
Properties
Instance
Gets the runtime singleton, loading it from resources on first access.
Declaration
public static GlobalSettings Instance { get; }
Property Value
| Type | Description |
|---|---|
| GlobalSettings |
RandomProvider
Gets the shared random provider used to generate random values across the library.
Declaration
public static IRandomProvider RandomProvider { get; }
Property Value
| Type | Description |
|---|---|
| IRandomProvider |
Methods
LoadAsset()
Loads the settings asset from resources without caching it on the singleton.
Declaration
public static GlobalSettings LoadAsset()
Returns
| Type | Description |
|---|---|
| GlobalSettings | The loaded asset, or |