is an internal cheat for the game AssaultCube written in c++. I wrote this cheat to refresh my introduction to programming, which was cheat development. The game AssaultCube was chosen for this because it needs little resources, is open source and well documented for cheat development. To find the simple memory addresses of the game the program CheatEngine was used. This was followed by the use of ReClass.net to build structures from the memory area. To find game functions for example the NoRecoil function the debugger x64dbg and IDA Free was used. The guides on guidedhacking.com are the foundation on which the entire cheat development is based. If you are interested in learning the basics of cheat development and already know a programming language, this is the best source.
This project includes a visual studio solution that contains two projects. The Injector
-project is a very basic implementation of a dll injector that uses the function LoadLibraryA
to load the dll into AssaultCube. The AssaultHook
-project is the internal cheat itself. After the AssaultHook-DLL is injected into the game, a new thread is created. In this thread the needed hack instances are created and the opengl function wglSwapBuffers
is hooked using a trampoline function. The cheat logic is then executed in the hooked function. The advantage of the wglSwapBuffers
function is that it is called at the end of each rendered frame.
feature | how its done |
---|---|
Aimbot | loop over the entitiy list; check if the entity is alive; check if the entity is visible, by calling the intersectgeometry function from assault cube; calculate the needed viewing angles; set the viewing angles |
ESP Box | loop over the entitiy list; calculate the screen position using the WorldToScreen function; render a rectangle |
ESP Name | same as esp; but render the name over the entity |
ESP Health | same as esp; but render a filled rect that changes color and decreases in size when the health drops |
ESP Line | same as esp; but render a line to the entity |
Unlimited health | hook dodamage function; set damage to 0 if the this-pointer is equal to the LocalPlayerState |
Unlimted ammo | overwrite decrease ammo instructions with nop instructions |
No recoil | overwrite instructions: instead of calculate the recoil just return directly |
- detours with assembly for unl. ammo and no recoil
- fov aimbot