LibreAuth

ApiSeal

Lock SDK API endpoints behind Anti-RE — strip the gate and the client cannot call the API.

INFO
คู่กับ Hardening · Anti-Tamper · Ship Opaque

Why it exists

Reverse engineers often dump the auth base URL from the binary and replay init/license without your protection stack. ApiSeal stores the endpoint as XOR-masked bytes and only decrypts after AntiRe.Gate() arms a runtime token. Remove or NOP the gate without arming → Resolve() returns empty → every request fails closed.

Client flow

  1. new Client(url) → Bind(url) (plaintext field cleared)
  2. AntiRe.Gate() success → Arm()
  3. HTTP post uses Resolve() only — never a stored plain URL
  4. DieSilent / gate failure → Disarm()
// C#
using var app = new LibreAuthV2(name, owner, url, pub);
if (!AntiRe.Gate()) return;
await app.InitAsync(...);

// Python
client = LibreAuthV2(name, owner, url, pub)
if not gate():
    return
client.init(...)
WARN
Order matters: Bind then Gate. Arming before Bind is a no-op; call Gate again after constructing the client.

Shared API

CallRole
Bind(url)Seal endpoint material
Arm()Gate/Pulse success only
Disarm()Tamper / kill / gate fail
Resolve()URL or empty if locked
PathV2()Obfuscated /api/v2/ for MAC canonical

Modules by language

SDKFile
C# / WPF / VB / UnityApiSeal.cs
C++api_seal.hpp
Python / PHP / JS / TS / Go / Java / Rust / Ruby / Perl / Luaapi_seal.* / ApiSeal.* / api-seal.*
React / VueBFF only — never in the browser

Opaque ship

Needles, trip codes, and API path blobs are sealed in the SDK. That still leaves method names and IL readable on .NET until you run an obfuscator.

คู่มือผู้ค้า: Ship Opaque

Limits