← Back to work
01 · Game automation · 2026

Sair — CS2 External

Several weeks of work, one binary. A full-featured external for Counter-Strike 2 — read-only memory, hardware-input automation, custom ImGui overlay, and a four-tier anti-analysis layer keeping the internals quiet.

Role
Sole engineer
Stack
C++17, ImGui, DirectX 11
Hardware
Interception driver
Status
Released — full source
Sair menu — General tab

Pure external, by design.

No injection. No hooks. The cheat lives in its own process and reads CS2's memory at a steady 128 Hz tick — the same cadence the server runs at, so per-frame state never goes stale. Inputs go out through a hardware-style driver path so the OS sees a real mouse rather than a process posting messages.

That constraint shapes everything downstream. Targeting, ESP, chams — every feature ends up being a question of "how do you get the right bytes, and how do you act on them without touching the game?"

A full feature surface, organised.

The menu is split into Combat, Visuals, Utility, Config and Settings. Each tab is its own page in the overlay with its own preview widgets — toggling chams shows you the chams material on a small mannequin, the ESP page draws a live preview of every box, dot and flag you've enabled. The point was that no setting should require a restart to verify.

Combat
  • Aimbot — FOV, smoothing, multi-bone (head / neck / chest / pelvis), visible-only, predictive, RCS, first-bullet delay, no-shoot-smoke
  • Triggerbot — randomised press / release windows, hit-chance gate
  • Flickbot — angle-snap with optional restore back to the pre-flick aim
  • Silent Aim — click-window targeting, configurable max FOV
  • NoSpread — hit-chance gate against the live spread cone, never blocks valid shots
Visuals
  • ESP — boxes, skeleton, healthbar, head dots, snaplines, off-screen indicators, info flags (armor, scoped, flashed, defusing, C4, ping)
  • Chams — five materials: Flat, Ghost, Wireframe, Glow, Galaxy
  • Radar — draggable, zoomable circular minimap
  • Spectator List — named list with first-person / third-person / freecam tags
  • Items & Projectiles ESP — dropped weapons, grenades in flight, C4
  • Grenade Predictor — full bounce trajectory with optional gradient path
  • Watermark — draggable, branded
Utility
  • Anti-Flash — kill the white-out cleanly
  • Media Overlay — in-game music widget, draggable, persists with the rest of the config
  • Per-weapon profiles — every combat setting can fork by weapon
  • Config Manager — multi-config save / load to %APPDATA%\SAIR, hot-swap at runtime
Security
  • Four-tier anti-analysis — timing, syscall queries, integrity verification, hypervisor checks
  • String obfuscation — every meaningful string compiled into noise, deciphered on use
  • Randomised check order — Fisher-Yates shuffle each tick so no static breakpoint catches the same call twice
  • Hidden threads — workers don't show up to a debugger walking the thread list
  • Self-integrity — the checks check themselves; patching one trips the next
  • Silent exit — detection poisons internal state and the main loop drops cleanly. No popup, no log.

Three things that took the longest, and were worth it.

The anti-analysis stack. Anyone can call IsDebuggerPresent. Stacking four independent classes of check, randomising their order, and wiring them so a tampered result re-fires on the next tick — that took weeks of reading, breaking my own builds with debuggers, and patching the gaps. I won't go into method specifics; the short version is: timing, syscalls, integrity, and VM identity, all on a 15-second cadence with a near-zero overhead budget.

The NoSpread gate. The aimbot doesn't just track — it asks the spread model whether the shot would land before letting the trigger through. Knives, grenades and C4 fall through unconditionally so you never get blocked on a weapon the table doesn't cover. It's a small feature; the predicate behind it took me longer than half the rest of the build.

The overlay. Custom ImGui theme, sidebar nav, per-feature pages with live previews, draggable widgets, smooth animations on every transition. It feels like a desktop app, not a hot-glued cheat menu — which was the whole goal.

The interface — built like a product.

Five top-level tabs, each with its own subpages. Quick toggles up top so you can flip the four combat features on without clicking through. Per-feature live previews so you can dial in chams or ESP without ever leaving the menu. Configs save in milliseconds; hot-swap during a match works.

"The hardest line to walk was 'powerful, but not obviously powerful'. The interesting work isn't building the feature — it's deciding where to stop."

From here.

Sair is shipped. The next step is the universal color-aimbot engine I've been chipping at on the side, sharing the input layer and the overlay shell with this project. After that: HWID work — properly, at the driver level.

Want the build, or just want to talk about how the parts fit? Grab the .rar on MediaFire, or reach me on Discord.

navigate · selectGlobality v3