Skip to main content

Quick Start Guide

Get HotWheels SDK running in Counter-Strike: Global Offensive in just a few steps.
Important: Using this SDK in online matchmaking or VAC-secured servers will result in a permanent ban. Only use in offline mode or private servers for educational purposes.

Prerequisites

Before proceeding, ensure you have:
1

Built the DLL

Follow the Installation Guide to compile the SDK
2

CS:GO Installed

Have Counter-Strike: Global Offensive installed via Steam
3

DLL Injector

Have a DLL injector ready (see recommendations below)

Step 1: Choose a DLL Injector

You need a DLL injector to load the HotWheels SDK into CS:GO’s process space.

Extreme Injector

Recommended for beginners
  • User-friendly interface
  • Multiple injection methods
  • Supports x86 and x64
Download

Xenos Injector

Advanced option
  • Manual map injection
  • Stealth techniques
  • More configuration options
Download
Alternatively, you can write your own injector using CreateRemoteThread or manual mapping techniques.

Step 2: Launch CS:GO

1

Start in Windowed Mode

Launch CS:GO with the following launch options for easier debugging:
-windowed -w 1280 -h 720 -novid -insecure
  • -windowed: Run in windowed mode (easier to switch to injector)
  • -w 1280 -h 720: Set resolution (adjust to your preference)
  • -novid: Skip intro video
  • -insecure: Disable VAC (prevents accidental online play)
2

Load into a Map

Once in-game, load into any map:
Open Console (~)
Type: map de_dust2
Or start an offline game with bots through the UI.
3

Wait for Full Load

Ensure the game is fully loaded before injecting. You should:
  • Be able to move around
  • See the HUD
  • Hear game sounds

Step 3: Inject the DLL

1

Launch Extreme Injector

Run Extreme Injector as Administrator (required for process access)
2

Select Process

  1. In the process list, find and select csgo.exe
  2. If not visible, click “Refresh” or check “Show all processes”
3

Select DLL

Click “Select” and browse to your built DLL:
  • Debug: hw-sdk/debug/zipudhe2.dll
  • Release: hw-sdk/release/chungy.dll
4

Configure Injection

  • Injection Method: LoadLibrary (standard)
  • Process: csgo.exe
  • Leave other options at default
5

Inject

Click “Inject” and wait for the success message

Step 4: Verify Injection

After injection, verify the SDK is loaded:
1

Check for Console (Debug Build Only)

If you injected the Debug build (zipudhe2.dll), a console window should appear showing:
[+] Initializing HotWheels SDK...
[+] Config initialized
[+] CS:GO initialized
[+] Context initialized
[+] Interfaces initialized
[+] Hooks initialized
[+] Particle system initialized
Release builds do NOT show a console window.
2

Open the Menu

Press the INSERT key to toggle the ImGui menu interface.You should see the HotWheels menu with tabs for:
  • Aimbot settings
  • Visual features
  • Movement options
  • Configuration management
3

Test a Feature

Try enabling a simple feature to confirm everything works:
  1. Open menu (INSERT)
  2. Navigate to Visuals tab
  3. Enable “ESP” or “Glow”
  4. Close menu (INSERT)
  5. Verify the feature is working in-game

Step 5: Unload the SDK

To safely unload HotWheels from CS:GO:
Press DELETE key
Always unload the SDK before closing CS:GO to prevent crashes.

Troubleshooting

Possible causes:
  1. Wrong architecture: Ensure you built x86 (Win32), not x64
  2. Game not fully loaded: Wait until you’re in a map
  3. Blocked by antivirus: Add exception for the DLL
  4. Missing dependencies: Verify DirectX 9 runtime is installed
Debug steps:
  • Use Debug build to see console output
  • Check Windows Event Viewer for crash logs
  • Use Process Explorer to verify DLL is loaded in csgo.exe
Possible causes:
  1. Inject too early: Game modules not loaded yet
  2. Conflicting hooks: Another cheat/mod already loaded
  3. Corrupted build: Clean and rebuild the project
Solutions:
  • Wait 10-15 seconds after map load before injecting
  • Disable other overlays (Discord, Steam, etc.)
  • Try Release build instead of Debug
  • Check the initialization in hotwheels::init() - it waits for serverbrowser.dll
Possible causes:
  1. Hooks not installed: Check g_hooks.init() success
  2. Offsets outdated: CS:GO updated, need new signatures
  3. Feature disabled in config: Check menu settings
Debug:
  • Enable debug logging in features
  • Verify CreateMove hook is being called
  • Check interface pointers are valid
  • Update pattern signatures after CS:GO updates
Possible causes:
  1. Hooks not fully removed: Race condition
  2. Threads still running: Features not stopped
Prevention:
  • Wait a few seconds after pressing DELETE
  • Don’t use features while unloading
  • Ensure g_hooks.unload() completes before FreeLibrary

Usage Tips

Best Practices:
  1. Always use -insecure launch option to prevent VAC connection
  2. Test new features offline first before using in private servers
  3. Create configuration backups - configs save to csgo/hotwheels/configs/
  4. Update after CS:GO patches - offsets and signatures may break
  5. Use Debug builds for development - easier to diagnose issues

Key Bindings

KeyAction
INSERTToggle menu
DELETEUnload SDK
Arrow KeysNavigate menu (when open)
MouseClick menu items

What’s Next?

Explore Features

Learn about aimbot, ESP, movement, and other features

Configuration

Set up and manage your configuration files

Hooks Reference

Understand the hooking system and add custom hooks

API Documentation

Dive into the SDK’s classes and utilities

Example: First Custom Feature

Here’s a simple example to get you started:
// In hooks/create_move/create_move.cpp
void __stdcall hooks::create_move(int sequence_number, float input_sample_time, bool active)
{
    // Call original first
    o_create_move(sequence_number, input_sample_time, active);
    
    // Get user command
    auto cmd = g_interfaces.input->get_user_cmd(sequence_number);
    if (!cmd || !cmd->command_number)
        return;
    
    // Get local player
    auto local = g_ctx.local();
    if (!local || !local->is_alive())
        return;
    
    // Simple bunny hop
    if (g_config.movement.bunny_hop) {
        if (!(local->flags() & FL_ONGROUND))
            cmd->buttons &= ~IN_JUMP;
    }
    
    // Your custom feature here!
    if (GetAsyncKeyState(VK_SPACE)) {
        console::print<console::log_level::info>("Space pressed!");
    }
}

Ready to develop?

Explore the SDK architecture and start building your own features

Build docs developers (and LLMs) love