Skip to content

guidedhacking/GH-Offset-Dumper

Repository files navigation

Guided Hacking Offset Dumper aka GH Offset Dumper

Version 1.0

Why is GH Offset Dumper Better Than All Others?

  • Three dump file formats: .hpp (C/C++ header), .ct (Cheat Engine Table), .rcnet (ReClass.NET)
  • .hpp header file is easily included in your project, so you can use offsets. Also, it has comments showing modules and base objects of signatures and netvars respectively.
  • .ct Cheat Engine Table shows the Local Player and Entity List. At the bottom, all signatures and netvars are organized in a nice format.
  • .rcnet ReClass.NET: All netvar tables are organized as classes.

CS:GO C/C++ dump header CS:GO Cheat Engine Table CS:GO ReClass.NET netvars

What does it do

Externally scan a process for signatures and dump the relative offsets to a header file which is easy to incorporate into your Visual Studio project. When an update is released for a game, you run the dumper to get the latest offsets.

Releases/Downloads

The Releases section of GitHub contains GH offset dumper executables and dump files for CS:GO.

Why

Scrubs don't know how to pattern scan so they manually update their offsets in their game hacks after running an offset dumper like this.

How to use

  1. Put config.json in the same folder as the dumper.
  2. Run the game.
  3. If the game uses the source engine you should run GH-Offset-Dumper-64.exe if the game is 64 bits, or GH-Offset-Dumper-32.exe if the game is 32 bits, otherwise netvars will not be dumped. If the game does not use the source engine, you can use either one.
  4. Include the generated .hpp file in your project.

How to use the GHDumper.h library

To use the dumper as a library in your project, you need GHDumper.h and json.hpp.

#include <fstream>
#include "json.hpp"
#include "GHDumper.h"

int main()
{
	// load json
	std::ifstream file("config.json"); 
	auto config = nlohmann::json::parse(file);

	// dump as std::unordered_map<std::string, ptrdiff_t>
	auto signatures = gh::DumpSignatures(config);
	auto netvars = gh::DumpNetvars(config, signatures);
	
	// format files as std::string
	auto hpp = gh::FormatHeader(config, signatures, netvars);
	auto ct = gh::FormatCheatEngine(config, signatures, netvars);
	auto xml = gh::FormatReclass(config, netvars);
	
	// save files or do whatever
	// ...
}

How is this different from HazeDumper?

This dumper was inspired by hazedumper so thank you to frk1, rN' and the other contributors to that project.

I started learning Rust when messing with HazeDumper and I decided we needed a C++ version, I also wanted to extend the functionality.

GH Dumper will do the same thing as HazeDumper with the addition of dumping ReClass files and Cheat Engine Tables.

Our dumper uses the same json config file format, so they are interchangeable.

Notes

  • The main code is GHDumper.h (the dumper library) and main.cpp (uses the dumper library).
  • json.hpp is a dependency of GHDumper.h.
  • zip.h, zip.c and miniz.h are dependencies of main.cpp. They are used to make a ZIP file when creating .rcnet.
  • If any value is missing from the output header file, it is possible the signature is outdated and thus the pattern scan returned 0.
  • In CS:GO, joining a match may cause the dumper to fail. Restarting CS:GO should solve it.

TODO

  • Make an internal version
  • Add CSS functionality
  • Other ideas to make it kewl

Credits

Thank you to frk1, rN' and the contributors to hazedumper

Thank you to nlohmann and the contributors of json.hpp

Official GH Courses