ATLAS PRESENTS
FRAUD
NETWORK

A Unity anti-cheat and asset protection toolkit.
Encrypt builds. Guard sessions. Block exploiters.
Three scripts. Zero excuses.

DOWNLOAD MODULES MICHAELSERVICES/ATLAS
AES-256
Encryption
3
C# Modules
FREE
Open Source
0ms
Extra Deps
UNAUTHORISED CLIENT — FORCE QUIT AES-256 ASSET ENCRYPTION — ACTIVE PLAYFAB SESSION MISSING — REJECTED STREAMINGASSETS ENCRYPTED TO .BIN TAMPERED ASSET — DETECTED PLAYFAB ID VERIFIED — OK MEMORY INJECTION ATTEMPT — BLOCKED BUILD INTEGRITY — CONFIRMED UNAUTHORISED CLIENT — FORCE QUIT AES-256 ASSET ENCRYPTION — ACTIVE PLAYFAB SESSION MISSING — REJECTED STREAMINGASSETS ENCRYPTED TO .BIN TAMPERED ASSET — DETECTED PLAYFAB ID VERIFIED — OK MEMORY INJECTION ATTEMPT — BLOCKED BUILD INTEGRITY — CONFIRMED
AUTH PACKAGE + C# MODULES

DROP IN.
GO LIVE.

Download the Atlas Auth package for one-click setup, or drop in the individual C# scripts. No extra dependencies beyond PlayFab.

ATLAS AUTH NEW .UNITYPACKAGE
Atlas Auth.unitypackage · Drop-in Unity authentication package

Complete authentication system for Unity — import directly and get a fully integrated auth flow with PlayFab session management, no manual script setup required.

DOWNLOAD PACKAGE
// Individual C# modules — click to expand
01
Atlas Protection
AtlasProtection.cs
PLAYFAB MONOBEHAVIOUR STABLE

Runtime session guard. Attaches to any persistent GameObject — waits 500ms after scene load then verifies the player is logged into PlayFab. If the session is missing or PlayFab ID is null, the game force-quits immediately. Safe editor testing via the quitInEditor toggle.

DOWNLOAD
AtlasProtection.cs
using UnityEngine;
using PlayFab;
using PlayFab.ClientModels;

public class AtlasProtection : MonoBehaviour
{
    [Header("ATLAS PROTECTION")]
    public bool quitInEditor = false;

    void Start()
    {
        Invoke(nameof(CheckPlayFabID), 0.5f);
    }

    void CheckPlayFabID()
    {
        if (!PlayFabClientAPI.IsClientLoggedIn())
        {
            ForceClose("PlayFab client not logged in.");
            return;
        }
        if (string.IsNullOrEmpty(PlayFabSettings.staticPlayer.PlayFabId))
        {
            ForceClose("Missing PlayFab ID.");
            return;
        }
        Debug.Log("[ATLAS] PlayFab ID verified.");
    }

    void ForceClose(string reason)
    {
        Debug.LogError("[ATLAS PROTECTION] " + reason);
#if UNITY_EDITOR
        if (quitInEditor)
            UnityEditor.EditorApplication.isPlaying = false;
#else
        Application.Quit();
#endif
    }
}
02
Atlas Asset Loader
AtlasAssetLoader.cs
AES-256 STATIC CLASS STABLE

Runtime decryption loader. Reads encrypted .bin asset files from StreamingAssets and decrypts them in memory using AES-256 — the raw bytes are never written to disk. Pair with AtlasObbPacker which produces the encrypted files at build time.

DOWNLOAD
AtlasAssetLoader.cs
using UnityEngine;
using System.IO;
using System.Security.Cryptography;

public static class AtlasAssetLoader
{
    private static readonly byte[] KEY =
        System.Text.Encoding.UTF8.GetBytes("A7L4S_32_BYTE_INTERNAL_KEY_123");

    private static readonly byte[] IV =
        System.Text.Encoding.UTF8.GetBytes("A7L4S_16_BYTE_IV!");

    public static byte[] LoadBytes(string relativePath)
    {
        string path = Path.Combine(
            Application.streamingAssetsPath,
            relativePath + ".bin");

        if (!File.Exists(path))
        {
            Debug.LogError("Atlas: Encrypted asset missing: " + relativePath);
            return null;
        }

        byte[] encrypted = File.ReadAllBytes(path);
        return Decrypt(encrypted);
    }

    private static byte[] Decrypt(byte[] data)
    {
        using (Aes aes = Aes.Create())
        {
            aes.Key = KEY;
            aes.IV  = IV;
            using (MemoryStream ms = new MemoryStream())
            using (CryptoStream cs = new CryptoStream(
                ms, aes.CreateDecryptor(), CryptoStreamMode.Write))
            {
                cs.Write(data, 0, data.Length);
                cs.Close();
                return ms.ToArray();
            }
        }
    }
}
03
Atlas OBB Packer
AtlasObbPacker.cs
AES-256 EDITOR TOOL STABLE

Unity Editor build tool. Adds Tools → Prepare StreamingAssets to the menu bar. Recursively encrypts every file in your StreamingAssets folder to AES-256 .bin files, then deletes the originals — so only encrypted data ships in your build.

DOWNLOAD
AtlasObbPacker.cs
using UnityEditor;
using UnityEngine;
using System.IO;
using System.Security.Cryptography;

public class AtlasObbPacker
{
    private static readonly byte[] KEY =
        System.Text.Encoding.UTF8.GetBytes("A7L4S_32_BYTE_INTERNAL_KEY_123");

    private static readonly byte[] IV =
        System.Text.Encoding.UTF8.GetBytes("A7L4S_16_BYTE_IV!");

    [MenuItem("Tools/Prepare StreamingAssets")]
    public static void EncryptStreamingAssets()
    {
        string root = Path.Combine(Application.dataPath, "StreamingAssets");
        if (!Directory.Exists(root))
        {
            Debug.Log("Atlas: No StreamingAssets folder.");
            return;
        }

        foreach (string file in
            Directory.GetFiles(root, "*", SearchOption.AllDirectories))
        {
            if (file.EndsWith(".bin")) continue;
            byte[] raw = File.ReadAllBytes(file);
            byte[] enc = Encrypt(raw);
            File.WriteAllBytes(file + ".bin", enc);
            File.Delete(file);
        }
        AssetDatabase.Refresh();
        Debug.Log("Atlas: StreamingAssets encrypted for build.");
    }

    private static byte[] Encrypt(byte[] data)
    {
        using (Aes aes = Aes.Create())
        {
            aes.Key = KEY;
            aes.IV  = IV;
            using (MemoryStream ms = new MemoryStream())
            using (CryptoStream cs = new CryptoStream(
                ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
            {
                cs.Write(data, 0, data.Length);
                cs.Close();
                return ms.ToArray();
            }
        }
    }
}
CAPABILITIES

WHAT ATLAS
DESTROYS.

Every protection layer ships inside three scripts — nothing extra to install or configure.

AES-256 Asset Encryption
StreamingAssets are encrypted to .bin before your build ships — players can never extract raw assets from the APK or build folder.
PlayFab Session Guard
Requires a live authenticated PlayFab session at runtime. Any unauthenticated or spoofed client gets force-quit immediately on scene load.
One-Click Build Prep
Run Tools → Prepare StreamingAssets in the Unity Editor to encrypt all assets in one click before every build.
Delayed Verification
The PlayFab check fires 500ms after Start() — giving the SDK time to initialise before Atlas evaluates the session state.
In-Memory Decryption
AtlasAssetLoader decrypts assets in memory on demand — the plaintext is never written back to disk, leaving nothing for extractors to grab.
Safe Editor Testing
The quitInEditor flag lets you test enforcement in the Unity Editor without killing your play session during development.
SETUP GUIDE

LIVE IN
FOUR STEPS.

PHOTON CUSTOM AUTH

Enable Custom Authentication in your Photon server settings, then paste this as your auth URL:

https://michaelservices.pythonanywhere.com/auth
01
Clone or Download
Grab the three .cs files from GitHub and drop them anywhere in your Unity project's Assets/ folder.
02
Attach Protection
Add AtlasProtection as a component on a persistent GameObject in your first scene.
03
Encrypt Assets
Run Tools → Prepare StreamingAssets before every build to encrypt your assets automatically.
04
Build & Ship
Build normally. Atlas runs silently — cheaters and modders are blocked at the gate.
© 2026 ATLAS BY MICHAELSERVICES · FRAUD NETWORK · PROTECT YOUR GAMES · GITHUB.COM/MICHAELSERVICES/ATLAS