- Game Name
- Sauerbraten
- Anticheat
- None
- How long you been coding/hacking?
- 7 years
- Coding Language
- N/A
Cube 2 Sauerbraten can be considered as a successor to Assault Cube. Assault Cube used the Cube engine and Sauerbraten uses the Cube 2 Engine. Like Assault Cube it's a native C++ game that is fun to hack and it's source code is relatively easy to understand. For this reason it's a great game to learn game hacking on, and a number of GH members have chosen to make hacks for it to practice what they've been learning.
You can find the Sauerbraten source code here: Cube 2: Sauerbraten (game engine & FPS). Believe it or not, the last major release was 2013 but people are still updating the source code. The source code for Cube 1 & 2 is honestly pretty cool if you want to learn 3d game programming. Cube 2 is very similar to the Assault Cube source code, most tutorials and source codes for Assault Cube will also be helpful if you're working on Cube 2.
This guide, which was updated in 2020 should give you everything you need to get started making hacks for Sauerbraten, there are also posts following this one which also have good information related to Sauerbraten hacks.
Sauerbraten Offsets & Addresses
If you're making hacks for Sauerbraten you will need all the important offsets, addresses & reverse classes, which we have provided for you here
C++:
//General Info:
teamPtr = new GHPointer(moduleBase+0x216454,0x354);
healthPtr = new GHPointer(moduleBase+0x216454,0x15c);
shieldOnePtr = new GHPointer(moduleBase+0x216454,0x168);
shieldTwoPtr = new GHPointer(moduleBase+0x216454,0x164);
shieldThreePtr = new GHPointer(moduleBase+0x216454,0x160);
posXPtr = new GHPointer(moduleBase+0x216454,0x30);
posYPtr = new GHPointer(moduleBase+0x216454,0x34);
posZPtr = new GHPointer(moduleBase+0x216454,0x38);
rotXPtr = new GHPointer(moduleBase+0x216454, 0x40);
rotYPtr = new GHPointer(moduleBase+0x216454, 0x3c);
//Weapon Ammo:
chainSawAmmoPtr = new GHPointer(moduleBase+0x216454,0x178);
shotGunAmmoPtr = new GHPointer(moduleBase+0x216454,0x17C);
miniGunAmmoPtr = new GHPointer(moduleBase+0x216454,0x180);
rpgAmmoPtr = new GHPointer(moduleBase+0x216454,0x184);
huntingRifleAmmoPtr = new GHPointer(moduleBase+0x216454,0x188);
grenadeAmmoPtr = new GHPointer(moduleBase+0x216454,0x18C);
pistolAmmoPtr = new GHPointer(moduleBase+0x216454,0x190);
//Misc:
weaponCooldownPtr = new GHPointer(moduleBase+0x216454,0x174);
quadDamagePtr = new GHPointer(moduleBase+0x216454,0x16C);
isShooting = new GHPointer(moduleBase+0x216454,0x1E0);
C++:
Pistol Ammo: PlayerBase+0x190
Shotgun Ammo: PlayerBase+0x17C
Minigun Ammo: PlayerBase+0x180
RPG Ammo: PlayerBase+0x184
Rifle Ammo: PlayerBase+0x188
Grenade Ammo: PlayerBase+0x18C
Blue Amor: PlayerBase+0x164
Health: PlayerBase+0x15c
Speed: PlayerBase+0x48)
Quad Damage: PlayerBase+0x16c
C++:
#define ADDY_ENTITY_LIST 0x29CD34 // sauerbraten.exe
#define ADDY_LOCAL_PLAYER 0x2074A4 // sauerbraten.exe
#define ADDY_PLAYER_COUNT 0x29CD3C // sauerbraten.exe
#define ADDY_MATRIX 0x13E71C // sauerbraten.exe
#define ADDY_SCREEN 0x29C1E8 // sauerbraten.exe
#define ADDY_GAMEMODE 0x1E5C28 // sauerbraten.exe
C++:
Unlimited Ammo:
sauerbraten.exe+A7F18 - FF 8C 8E 78010000 - dec [esi+ecx*4+00000178]
HP Pointer:
sauerbraten.exe+27A710 +0 +340
Armor Pointer:
sauerbraten.exe+27A710 +0 +348
Fly Hack:
sauerbraten.exe+B4F94 - 89 46 38 - mov [esi+38],eax
C++:
class playerent
{
public:
char pad_0x0000[0xC]; //0x0000
float m_velocityX; //0x000C
float m_velocityY; //0x0010
float m_velocityZ; //0x0014
char pad_0x0018[0x18]; //0x0018
float m_posX; //0x0030
float m_posY; //0x0034
float m_posZ; //0x0038
float m_yaw; //0x003C
float m_pitch; //0x0040
char pad_0x0044[0x118]; //0x0044
__int32 m_health; //0x015C
char pad_0x0160[0x4]; //0x0160
__int32 m_armor; //0x0164
char pad_0x0168[0x14]; //0x0168
__int32 m_ammo_wp_1; //0x017C
__int32 m_ammo_wp_2; //0x0180
__int32 m_ammo_wp_3; //0x0184
__int32 m_ammo_wp_4; //0x0188
__int32 m_ammo_wp_5; //0x018C
__int32 m_ammo_wp_6; //0x0190
char pad_0x0194[0x20]; //0x0194
__int32 m_id; //0x01B4
char pad_0x01B8[0x28]; //0x01B8
bool m_shooting; //0x01E0
char pad_0x01E1[0x6F]; //0x01E1
char m_name[16]; //0x1587888
char pad_0x0260[0xF4]; //0x0260
char m_team[4]; //0x1587888
};
struct entlist
{
playerent* entities[128];
};
C++:
typedef bool (__cdecl * tRaycubelos)(Vector& o, Vector& dest, Vector& hitpos); // sauerbraten.exe + 0xEDB70
Sauerbraten Hacks
These are the best source codes for Sauerbraten hacks that we have available:
Source Code - C++ Internal Cube 2: Sauerbraten Aimbot (Simple)
Source Code - Shitty Cube 2: Sauerbraten Console C++ Trainer
Some other Sauerbraten resources
Source Code - Cube 2: Sauerbraten stuff
Source Code - Shitty Cube 2: Sauerbraten Console Trainer
Source Code - Cube 2: Sauerbraten - Simple Teleport Hack
Source Code - [WIP] Cube 2: Sauerbraten Aimbot
C# Sauerbraten x64 +7 Trainer + Source Code
Sauerbraten Hack Releases (no source code)
Download - Internal Cube2 : Sauerbraten Aimbot + ESP
Download - Cube 2: Sauerbraten Aimbot | Smoothing | FOV | Box ESP | (GoodGameSauer)
Download - Cube 2: Sauerbraten Cheat - Multi Hack
Download - Cube 2 Sauerbraten Teleport Hack
Download - Internal Cube 2: Sauerbraten Trainer
Java Hack Source Code by @Erarnitox
Source Code - Java Hacking Library (+ example Hack)
External Resources
jmagi98/Cube2InternalTrainer
Question Threads
Solved - How to make Sauerbraten Cheats - Cube 2 Trainer
Solved - Loop through Entities (Cube 2: Sauerbraten)
Solved - Cant write to static address
Solved - Help me with my 1st trainer ( Sauerbraten )
Solved - Can't attach Sauerbraten Cube 2 to Immunity Debugger
Solved - sauerbraten cube 2 health pointer cheat engine god mod
How to run Sauerbraten as x64
Overwrite sauerbraten.bat with this:
C++:
@ECHO OFF
set SAUER_BIN=bin
IF /I "%PROCESSOR_ARCHITECTURE%" == "amd64" (
set SAUER_BIN=bin64
)
IF /I "%PROCESSOR_ARCHITEW6432%" == "amd64" (
set SAUER_BIN=bin64
)
FOR /f "tokens=4-7 delims=[.] " %%i IN ('ver') DO (
IF %%i==Version (
set major_version=%%j
set minor_version=%%k
set patch_version=%%l
) ELSE (
set major_version=%%i
set minor_version=%%j
set patch_version=%%k
)
)
IF %major_version% GTR 10 (
set SAUER_BIN=bin64
) else (
IF %major_version% EQU 10 (
IF %minor_version% GTR 0 (
set SAUER_BIN=bin64
) else (
IF %patch_version% GEQ 16299 (
set SAUER_BIN=bin64
)
)
)
)
start %SAUER_BIN%\sauerbraten.exe "-q$HOME\My Games\Sauerbraten" -glog.txt %*
Continue reading for more info and offsets
Last edited: