Я опишу что точно нужно знать:
1. Язык C++. На нем и пишутся большинство читов. Полностью его изучить не мудрено, каждые 3 года выходит новый стандарт и добавляется новый функционал в std. Сейчас есть и другие компилируемые языки типа Rust, но пока большинство за C++. Важно, что он именно компилируется в машинный код (который понимает процессор) и зачастую игры так же пишутся на C++ из-за производительности (хотя бы движок).
1.1. Среда разработки. Это там где пишется сам код, для винды зачастую пишут в Microsoft Visual Studio и конечно ей нужно уметь пользоваться, есть и другие компиляторы.
2. Архитектуру X86 в общих чертах. Дело в том что после компиляции в исполняемом файле не остается никакого исходного кода C++, только машинный код X86. Процессор понимает эти команды X86 и зачастую их нужно знать в процессе реверс-инжиниринга.
2.1. Декомпилятор. Есть программы, которые из машинного X86 кода программы выдают псевдокод C++ похожий на оригинал, одна из самых известных таких программ IDA Pro, ей точно нужно уметь пользоваться, чтобы производитель статический (без запуска) реверс-инжиниринг.
2.2. Отладчик. Зачастую меняя что-то в игре ты захочешь попробовать это на лету, для этого подсоединяется отладчик к процессу игры. Их так же множество, например есть в составе Cheat Engine или отдельный x64dbg. Все они предназначены для отладки чужого X86 кода процесса. Например в вышеупомянутой студии отладка тоже есть, но своего приложения с исходными кодами, в случае игры как понимаешь исходных файлов нет.
2.3. Reclass. Добавлю сюда его с помощью него удобно составлять структуры в запущенном процессе игры. Это зачастую нужно т.к. тебе нужно получить из игры какую-то информацию.
В общем, весь процесс написания читов делится на два этапа:
1. Реверс инжиниринг. В игре есть определенное устройство, и тебе нужно как то с ней взаимодействовать, получать и изменять информацию, но ты не знаешь где она находится. Реверс инжиниринг и занимается тем, что ты без исходных кодов узнаешь это самое устройство, через статический анализ (IDA Pro) и/или динамический анализ (отладчик, ReClass и тд).
2. Написание кода. Зачастую пишется библиотека, которая внедряется в игру и получает доступ к адресному пространству процесса. Так что может свободно изменять и читать память, перехватывать участки кода и т.д.