Home

Awesome

Beginner Learning Materials on Reverse Engineering Video Games

Here is a compiled list based on personally recommended learning materials to help people with the process of learning how to reverse engineer video games. <br> I hope it will help others spend more time learning and less time searching.

Majority of the collected resources here will be focused on reversing PC games on the Microsoft Windows operating system with x86 assembly in mind over x64 as it is easier to learn.

Reversing engineering video games is more often than not related to "game hacking", they come and go together so don't be surprised if some of the learning materials come from such sites/sources.

Recommended order to learn

  1. Learn how to search efficiently on Google, all your answers and resources are found on the internet
  2. Learn using Cheat Engine
  3. Learn about hexadecimal and binary numbering systems, and about computer memory in general
  4. Learn x86 assembly
  5. Learn C++
  6. Learn using IDA/Ghidra
  7. Learn basics of game programming
  8. Learn fundamentals of the Win32 API
  9. Learn the inner workings of Windows operating system, aka Windows internals
  10. Practice, practice, practice...

Software needed for reversing

It's not recommended to run any of these tools (especially Cheat Engine) while playing multiplayer games that have anti-cheat systems in place, unless you know what you are doing.

For starters get familiar with Cheat Engine, and either IDA or Ghidra.

Picking the right tools

Before getting to work on a game you must know your target, so it's important to gather some information such as:

Games sharing the same engines often have really similar and recurring codebase that you can use to your advantage. For third-party game engines such as Unreal Engine or Unity there are a lot of custom tools online that can ease the process of reverse engineering.

Games coded in high-level interpreted/intermediate programming languages such as C# or Java are generally much easier to reverse engineer as compared to C/C++, due to the metadata not being lost as they aren't compiled into low-level machine code.

For Unity-based games (and for any other games developed with the .Net Framework) use dnSpy instead of IDA/Ghidra.

We are mainly going to focus on reversing games coded in C++ as it is still the gold standard in video game programming.

Must-read beginner level materials

Must-watch youtube channels

Other really useful materials

Useful sites along the way

Keywords you want to learn about in general