LibreAuth

Access Controls

Every toggle in Panel → Application → Settings → Access Controls — what it does, when to use it, and what your client must send.

Panel path

Select an application → Settings tab → Access Controls card. Changes apply per application — not global.

11 toggles Per-app Instant effect

At a Glance

Toggle DB field Affects Client action
App StatusenabledinitNone — server rejects when off
HWID Lockhwid_locklogin · license · registerSend stable hwid
Force HWIDforce_hwidlogin · license · registerhwid required (non-empty)
Block VPNsblock_vpnAuthenticated requestsNone — IP checked server-side
Block Emulatorsblock_emulatorAll API types except logout/log/webhookReal device HWID — no emulator or fake API signals
Hash Checkhash_checkinit · checkSend hash (MD5) and/or sha256 — pass if any value is on the whitelist
Auto-ban on Hash Rejecthash_auto_banHash reject pathNone — server bans HWID + linked users
Auto-ban on Tool Triptool_auto_banClient type=banCall Ban / BanAsync when Hardening trips (if policy ON)
Block AI Assist Toolsblock_aiClient HardeningPass blockAi into RunChecks when policy.block_ai
Require signed Anti-RE policyantire_requireinit (Enterprise)Opaque รับ policy.antire ที่เซ็นแล้ว · เรียก Boot/Gate ตาม DROPIN
Anti-RE hard modeantire_hardClient Gateไม่มีพารามิเตอร์เพิ่ม — Opaque อ่านจาก policy / แอป
Require Protect Meshprotect_require_meshinit (Enterprise)Client ส่ง protect_mesh จาก Gate (แพ็กใหม่) · + protect_vm เมื่อ profile maximum
Anti-Tamperintegrity_guardSession after initSame IP/HWID · no replay
Nonce Chainanti_replayRequests after initEcho nonce from prior response
Bind Session IPstrict_ipSession requestsSame public IP throughout session
Token File Checktoken_file_checkinitSend token + thash (C++)
App PausedpausedinitNone — maintenance mode
TIP
Official LibreAuth SDKs handle wire auth, nonce, and signatures automatically. Custom clients (raw HTTP or third-party forks) must implement each requirement manually — see Client Integration.
TIP
Logging, Discord, and Event Logs: Logging & Integration · Remote desktop triggers: Web Loader.

Recommended Presets

Game / Tool

Maximum protection

  • Hash Check ON + whitelist MD5/SHA256 in Settings → Config → Hash Management (drag-drop adds both)
  • Auto-ban on Hash Reject ON
  • Auto-ban on Tool Trip ON (production clients)
  • Block AI Assist Tools ON on shipped builds only (keep OFF while developing in Cursor / Hermes)
  • Require signed Anti-RE policy · Anti-RE hard · Require Protect Mesh ON (Enterprise · Opaque ใหม่)
  • HWID Lock + Force HWID ON
  • Block Emulators ON
  • Anti-Tamper ON
  • Block VPNs — optional (may block legit mobile users)
  • Nonce Chain — ON if using custom SDK
Desktop SaaS

Balanced

  • HWID Lock ON · Force HWID off unless needed
  • Anti-Tamper ON
  • Hash Check — optional for native builds
  • Bind Session IP — off if users change networks often
Development

Testing only

  • Keep Hash Check / Token File / Nonce / auto-ban / Block AI OFF
  • Block VPNs & Emulators OFF
  • Enable protections one-by-one before release

Application Lifecycle

1App Status

Master on/off — disabled apps reject init

→
2App Paused

Maintenance — users see pause message

→
3init

Hash · Token File · Emulator checks run here

→
4login / license

HWID · VPN · Emulator · Force HWID

→
5Session

Anti-Tamper · Nonce · Bind IP on every call

All Controls

App Status

CoreenabledServer only

Master switch for the application. When disabled, every init request fails immediately — existing sessions may still work until they expire.

When to enable

Disable to fully shut down an app without deleting data. Use when migrating, investigating abuse, or sunsetting a product.

Client requirements
  • No extra parameters — failure is server-side.
  • Response: Application disabled (custom message supported in panel).
Errors
E16App disabled — enable in panel or contact seller

App Paused

CorepausedServer only

Temporary maintenance mode. Blocks new init calls while keeping the app record and settings intact. Different from App Status — paused apps show a user-facing maintenance message.

When to enable

Deploying updates, database maintenance, or pausing sales temporarily. Toggle off when ready to accept logins again.

Client requirements
  • No client changes — users see: Application is currently paused…
  • Existing sessions are not automatically killed — combine with session kill if needed.
Errors
E17App paused — wait for developer to unpause

HWID Lock

Securityhwid_lockClient + Server

Binds each user account to a hardware ID. First successful login stores the HWID — subsequent logins from a different machine are rejected until reset.

When to enable

Desktop tools, licensed game utilities, or any license you want locked to one PC. Always pair with a real HWID generator in your client.

Client requirements
  • Send the same hwid string on login, license, register, and check.
  • C++: la_guard::Hwid() from hardening.hpp.
  • Reset via panel Users tab or Seller API resethwid.
Errors
HWID mismatchUser bound to another machine — reset HWID or use correct device

Force HWID

Securityforce_hwidClient required

Requires a non-empty hwid on every login and license call. Works alongside HWID Lock — blocks clients that send blank HWIDs to bypass binding.

When to enable

Enable when HWID Lock is on and you want zero tolerance for missing HWID. Keep off during early development if your client does not send HWID yet.

Client requirements
  • Must send hwid with minimum length (configurable via min_hwid in panel).
  • Empty or missing HWID → Force HWID is enabled…
Errors
Force HWID…Send hwid or disable Force HWID in panel

Block VPNs

Advancedblock_vpnServer only

Rejects requests from IP addresses identified as VPN, proxy, or hosting/datacenter ranges. Checked on all authenticated API calls (not on bare init).

When to enable

Reduce fraud, multi-account abuse, and geo-evasion. Avoid on mobile-heavy apps where carrier NAT and VPN overlap.

Client requirements
  • No client parameters — server inspects client IP.
  • Behind Cloudflare: ensure server reads CF-Connecting-IP correctly.
  • Users on legitimate VPN see: VPNs are blocked on this application.
Errors
VPN blockedDisable VPN or turn off Block VPNs in panel for testing

Block Emulators

Securityblock_emulatorClient + Server

Unified emulator guard — Android/iOS AVD, BlueStacks, Nox, LDPlayer, WSA, fake local API servers, VM signals, suspicious HWID, loopback clients.

When to enable

Any app that must run on real hardware only. Also blocks fake local auth servers. Default is ON for new apps.

Client requirements
  • Use real device fingerprints from physical hardware.
  • Server scans hwid, device fields, headers, client IP, and fake-API markers on every protected request.
  • C++ clients: call la_guard::RunChecks() before init — detects emulator processes, hosts redirect, local ports.
Errors
Emulator blockedRun on real hardware or disable for dev builds only

Hash Check

Securityhash_checkClient required

Validates client executable MD5 and/or SHA-256 against a server whitelist on init and check. Soft when whitelist is empty; hard kill when ≥1 entry. Pass if any sent candidate matches the whitelist (MD5-only clients still work when the list also has SHA-256). Prefer sending both. Matched hash binds to the session when Redis is available.

When to enable

Native C++ / C# builds distributed as binaries. Drag-drop the final build after obfuscation/seal so both SHA256 and MD5 land on the whitelist.

Client requirements
  • Send MD5 as hash and SHA-256 as sha256 on init/check (either is enough if whitelisted).
  • C++/C#: ExeMd5Hex() + ExeSha256Hex() — compute after SecureLoader seal / final obfuscation.
  • Panel → Hash Management: drag-drop adds both hashes; or Seller API addhash.
  • On reject: Panel → Recent rejected hashes (MD5 or SHA256) — add to whitelist.
Errors
E04 / hash_rejectHash required — send hash/sha256 on init
E05 / hash_rejectNo sent candidate matches the whitelist
E48E0A5Not a hash error — Invalid license key after init succeeded

Auto-ban on Hash Reject

Securityhash_auto_banServer

When Hash Check rejects a client with a clear crack signal, ban that HWID and linked users. Reason prefix hash_auto_ban:. Does not sweep IPs (safer on shared NAT). Does not auto-ban on no_whitelist (empty whitelist = seller forgot hash). On API v2 soft init/check, does not auto-ban until the session is validated (license/login) — so a mismatch before the key prompt cannot blacklist the machine. Bans on mismatch, or hash_not_sent only when whitelist already has entries (and session is validated or hard-fail path). Default OFF.

When to enable

Production apps with Hash Check ON and MD5/SHA256 whitelist populated — crack / patched builds should not keep retrying after license.

Client requirements
  • No extra client work — server calls BanMachine after reject when allowed.
  • Pair with Hash Check + whitelist (prefer SHA256+MD5) after every release build before enabling this toggle.
  • Already-banned HWIDs stay banned until you unban in HWID Bans.
Errors
BlacklistedHWID banned after hash mismatch on a validated session — unban in HWID Bans if false positive (e.g. forgot to whitelist new build)

Auto-ban on Tool Trip

Securitytool_auto_banClient + Server

Policy flag on init. When ON, client should call type=ban (Ban / BanAsync) after Hardening trips (CE / IDA / UD / debugger / emulator / AI). Default OFF.

When to enable

Ops / native clients that run RunChecks in a loop and can report self-ban.

Client requirements
  • Read policy.tool_auto_ban from Init (Authority stores it).
  • On Hardening fail: Ban("tool:" + FailName) then exit.
  • Unvalidated Ops sessions may self-ban only their bound_hwid (server ignores forged HWID).
Errors
Session not boundInit first so session has bound_hwid
BlacklistedExpected after successful tool ban

Block AI Assist Tools

Securityblock_aiClient

Policy flag for AI-assisted RE. Hardening scans exact exe + process path marks + window titles: Cursor, Windsurf, Hermes Agent, Continue, Cline, Claude, Copilot, Ollama, LM Studio, Trae, Goose, OpenHands, Codex/Gemini CLI, local LLMs, … Checked only when client passes blockAi=true into RunChecks — not Anti-RE BadWindow. Default OFF.

When to enable

Shipped production builds. Never enable on your own Cursor / Hermes / Claude machine during development.

Client requirements
  • After Init: if policy.block_ai / Authority.BlockAi(), call RunChecks(..., blockAi: true).
  • Path marks catch Python-hosted agents (e.g. ~\.hermes\hermes-agent\) even when the exe is python.exe.
  • Dev escape: LA_ALLOW_AI=1.
  • รายละเอียด: sdk/protect/ANTI_AI.md · Hardening.
Errors
ai_assistHardening fail name when AI tools / hermes-agent / path marks hit

Require signed Anti-RE policy

Securityantire_requireInit (Enterprise)

Init fail-closed ถ้าเซิร์ฟเวอร์ส่ง policy.antire ที่เซ็นไม่ผ่าน หรือไม่มี signature · คู่กับ Opaque ที่เรียก ArmPolicy หลัง Init

When to enable

Production Enterprise หลังโหลด Opaque ใหม่และทดสอบ Init แล้ว

Client requirements
  • ใช้ Opaque Pack — รับ policy จาก Init แล้ว Arm ตาม DROPIN
  • อย่าตัด Gate / Pulse ออกจาก build ขาย
Errors
ANTIRE_POLICY_REQUIREDInit 403 — เปิดสวิตช์นี้แต่ policy ยังเซ็นไม่ได้

Anti-RE hard mode

Securityantire_hardClient Gate

บังคับสแกน/neutralize RE tools หนักขึ้นก่อน Gate · รวมพฤติกรรม function flood เมื่อติด debugger

When to enable

Production ที่ต้องการต้นทุน RE สูง · ทดสอบบนเครื่องขายจริงก่อน

Client requirements
  • เรียก Protect.Boot → Gate → StartPulse ตาม DROPIN — ไม่มีพารามิเตอร์เพิ่ม

Require Protect Mesh

Securityprotect_require_meshInit (Enterprise)

Client ต้องส่ง stamp จาก Gate (protect_mesh) · profile maximum ต้องมี protect_vm ด้วย — กันแพตช์ Gate เปล่าแล้วยิง Init

When to enable

หลังอัป Opaque ที่รองรับ Mesh และทดสอบ Init ผ่านแล้ว

Client requirements
  • ใช้ Opaque / Protect AIO เวอร์ชันใหม่ — Gate สร้าง mesh ให้อัตโนมัติ
  • ส่ง mesh ไปกับ Init ตาม DROPIN ของภาษา
Errors
PROTECT_MESH_REQUIREDInit 403 — ไม่มี mesh
PROTECT_VM_REQUIREDInit 403 — maximum ต้องมี protect_vm

Anti-Tamper

Securityintegrity_guardClient + Server

Master session integrity layer. Enables duplicate-request blocking, optional IP binding, HWID session lock, and Token File validation when that sub-toggle is on.

When to enable

Production apps using LibreAuth SDK or a custom client that sends consistent HWID and respects session rules. Default ON.

Client requirements
  • Send identical hwid on every request after login.
  • Do not replay captured requests in rapid succession.
  • Sub-toggles (Nonce Chain, Bind Session IP, Token File) only apply when Anti-Tamper is ON.
Errors
E10Session IP mismatch — Bind Session IP is on
E12Duplicate request — wait before retrying the same payload
E13HWID session mismatch — hwid changed mid-session

Nonce Chain

Advancedanti_replayClient required

Challenge-response chain: each API response includes a nonce. The next request must echo that exact nonce. Prevents simple request replay from packet captures.

When to enable

Custom SDKs or high-value targets. Official LibreAuth SDKs send nonce automatically. Enable only when your client implements it.

Client requirements
  • Store nonce from every response.
  • Send it as nonce on the next request (before server issues a new one).
  • Missing or wrong nonce → Invalid nonce / E11.
Errors
E11Send nonce from previous response on every request

Bind Session IP

Advancedstrict_ipServer + Network

Session is locked to the IP address recorded at init. If the user's public IP changes mid-session (mobile handoff, VPN toggle), subsequent calls fail.

When to enable

Fixed-desktop environments. Disable for mobile users, CGNAT, or Cloudflare setups where IP may appear to change.

Client requirements
  • No extra fields — server compares current IP to session IP.
  • Requires stable client IP detection on server (see Cloudflare / reverse proxy config).
Errors
E10Session IP mismatch — reconnect from same network

Token File Check

Advancedtoken_file_checkC++ client

Token file validation on init. Client sends integrity token + MD5 of token.dat. Server verifies against configured token hash.

When to enable

C++ loaders using token.dat sidecar files. Set Token File Hash in panel Settings when enabling.

Client requirements
  • On init: send thash = MD5 of token.dat (32 hex).
  • Send token per SDK / panel integration guide.
  • Requires Anti-Tamper ON (integrity_guard).
Errors
E06Token Must Be Provided
E07Hash Must Be Provided (thash)
E08Token file hash mismatch
E09Invalid token signature

Quick Links

INFO
Custom messages for any error can be set in Panel → Settings → Custom Messages. Wire error codes (E04, E10, …) are documented in Anti-Tamper.