References
Overview
This page was originally named "resources", but as grimy86 (a good lad) pointed out, it may mislead people into thinking I'm affiliated to whatever I put here. So unless specified otherwise I'm not. Anything I put here is purely to list helpful resources which I may or may not have used in my previous work. All that matters is that it's pedagogically useful.
Material
Game Hacking
Game Hacking is a polymath field. If you intend to learn it then you should already be comfortable with C++, data structures, Windows Internals and Reverse Engineering. Below I will list resources for each of these sections.
C++
To learn C++ nowadays you're very well covered. Like many people, I cannot emphasize enough how good learncpp.com is. Although since I know that many don't find reading for learning always very appealing, here's a couple of good YouTube content you should check out:
- The Cherno's C++ course.
- Bro Code's video. While it's a good introduction I doesn't seem to really go far through C++. I would still rely on other resources.
Data Structures
I'm not saying you should be a crazy competitive coder, but just at least having some basic knowledge of algorithms and data structures is important. Data structures even more:
- MIT 6.006's Introduction to algorithms, Spring 2020.
- Introduction to algorithms (book).
- Grokking Algorithms.
- LeetCode. This is less to learn and more to practice.
Windows Internals
Windows internals consists of learning, well, how Windows works. As of writing this I'm working on my very own introduction to this subject, but until then resources are scarce:
- Windows Internals books. This is an unavoidable series. After reading it I wouldn't say it's GREAT, but it being the only one of its kind it should be in your library.
- Windows Kernel Programming, Second Edition. An amazing book by one of the co-authors of the Windows Internals book series. You can clearly see that the bad parts of that series are not his fault by reading this great creation.
- Vergilius Project. A convenient database of present and past undocumented kernel structures from the Windows kernel.
Reverse Engineering
Reverse engineering is at the essence of game hacking. Firstly, you need all the beforementioned prerequisites. Then, you also want to be familiar with some assembly language. My recommendation is x86_64 Intel assembly. If you're working with desktop devices that's what you'll likely need. Overall, while this subject relies heavily on prerequisite theory, it's hard to really recommend resources for it as learning it is mostly done through practice. Here are some resources:
- Tutorials point assembly programming. There aren't many existing resources to learn assembly. This one should at least get you through the fundamentals you need.
- Reversing: Secrets of Reverse Engineering. An amazing book which got me started back in my younger days. Some of its contents are a little out of date, but I still think most of it is very relevant now and in the future.