Welcome Commander!
Assembly patch (binary patch, exe patch) is a patch that changes behaviour of executable provided by original devs. Usually change is done with intention to improve, fix, or add new functionality. Since original executable is written in C++ and built with MSVC compiler we are using in our disposal windows compatible C/C++ compiler and x86 assembly.
It is hard to tell where and how to learn this topic since it is very exotic one, especially x86 asm, windows architecture and reverse engineering. But these skills and knowledge would be more than enough:
- x86 assembly
- basic instructions and branches
- general registers
- addresses and pointers
- stack and heap
- calling conventions
- float point math (FPU and SSE)
- basic understanding of virtual addressing and windows processes
- MS Visual C++ 17 (20)
- C and its base
- algorithms and data structures + their implementations
- OOP
- templates and metaprogramming
- building pipeline
- Reverse engineering. This is a very sensitive topic since none of us can't really tell how to do that properly and learn that. It is mostly heuristic task that can't be described with any methods of how and when. But there are certainly hints to be used. Here must be a link to upcoming file with patterns for data structures and algorithms
- IDA
- x32Dbg
- Cheat Engine
Useful links:
- GCC inline asm
- Compiler explorer (select x86-64 gcc to try and test asm and C/C++)
- C++ doc (most of std is not available in this repo, be aware of that)
- ...
See setup process.