A fully-featured training software for Counter Strike: Global Offensive, made for Linux
WARNING: This program is being detected by Valve. Usage on official, custom or private servers will most likely result in punishment from Valve!
Gentoo/Portage Users might want to use this ebuild repository.
Ubuntu / Debian / Linux Mint
apt-get install gdb git cmake make build-essential libsdl2-dev
Arch Linux / Manjaro Linux
pacman -S base-devel cmake gdb git sdl2
Fedora
dnf install gdb git cmake make gcc-c++ SDL2-devel
OpenSUSE Tumbleweed
zypper install patchelf gdb git cmake make gcc-c++ SDL2-devel
These might be outdated, in that case please open an issue or a pull request, which updates the package names.
Make sure to download the submodules.
git clone --recurse-submodules https://github.com/Sumandora/FrameworkCSGO.git
The build script can be used to build the program.
./Build.sh
If you want to supply additional compiler arguments use CXXFLAGS
CXXFLAGS="-fstack-protector-strong" ./Build.sh
Some of these might break the resulting binary however.
A ELF-Binary will be built in the "Build"-subdirectory, which will be created by the script.
In case you want to build the project using a different name you can do something like this:
echo "MyCoolProjectName" > ProjectName
./Clean.sh
# Rebuild here using Debug.sh or Build.sh
Using Clang is inappropriate and should be avoided. Clang's machine code is too unpredictable, so it is necessary to disable security features. However, you can use clang by setting your CC
and CXX
environment variables to clang
and clang++
respectively.
Clang doesn't work right now because std::ranges::views::reverse is unsupported
A simple inject script using a debugger like GDB or LLDB is provided.
Make sure to run it as root user
./Load.sh
In case the default debugger (GDB) is not present, the script will error out.
Use the DEBUGGER
variable to set it to something you have.
DEBUGGER=lldb ./Load.sh
After the script loaded the program into the game it will set the ptrace_scope to 3.
This means that you will not be able to use ptrace after loading.
To use ptrace again you will need to reboot.
Please note that the program is not the only software using ptrace, it may be used widely on your system.
Make sure to use the script in a state, where the game is not changing frequently.
- Don't inject before you can see the main menu
- Don't inject when you are loading a level
Contributions are welcome
Issues and Pull Requests can help improve the program
- Fork the repository
git clone --recurse-submodules [URL] # Replace URL with your forked repository
./Build.sh # Check for initial build errors
** Make changes **
./Debug.sh # The debug script will build and load a debug build, which can also be analyzed using a debugger of your choice
git add file1 file2 # If you added new files, you have to mark them to be tracked, if you didn't add any files, you can skip this step.
git commit -a # Make a commit with all changed files. You may have to set the 'EDITOR' variable, because you have to write a commit message. Please write a small and compact message explaining what you have done.
git push
You should have pushed your changes to your fork
If you want to propose the changes in the mainline release,
you can open a pull request on GitHub