Привет! Если очень в кратце, то и код и данные игры (адреса значений, которые ты находишь в СЕ) хранятся в оперативной памяти. Разница тут в том, что код каждый запуск игры своего местоположения не меняет, т.е. находится всегда по одним и тем же адресам, в отличие от данных, которые могут появляться в разных её участках. Такое поведение вызвано технологией DMA - Dynamic Memory Allocation - динамическим распределением памяти. Борются с этой заразой двумя основными техниками: 1. Поиском указателей. Указатель - по факту, адрес, который хранит адрес какого-то значения игры. Ему пофиг на DMA, т.е. он _всегда_ будет знать, какой адрес будет иметь то или иное значение игры при каждом её запуске. Работать с указателями можно так же, как и с обычными адресами - изменять из значение, замораживать и так далее. 2. Инъекция кода. Суть - изменение кода игры. Код игры, в свою очередь, работает с адресами памяти, т.е. со значениями. Представь себе гипотетическую ситуацию: Адрес патронов: 0х123456. Адрес этот находится в оперативной памяти. Скажем, у нас 10 патронов. Как только стреляем - у нас за каждый выстрел отнимается по одному патрону. Отнимает их, скажем, вот такая функция: sub [0x123456],1 Ассемблерная команда "sub a,b", вычитает b из a, в данном случае - единицу из количества патронов. Допустим, что этот код находится по адресу 0x654321.Напомню, что и код и данные (адрес патронов в частности) находятся в оперативной памяти. А теперь мы берём и перезагружаем игру. Адрес патронов меняется: 0x11223344 А вот адрес инструкции, которая срабатывает при выстреле и отнимает у нас патроны, нет: 0x654321: sub [0x11223344],1 В чём же суть инъекции кода? Так как код никогда не меняет своего местоположения, то мы можем изменить саму инструкцию. К примеру, вычитать из количества патронов (инструкция всегда знает нужный адрес, так что указатель нам не нужен) не единицу, как было, а ноль. Или вообще поменять sub на add, и тогда единица будет прибавляться. Инъекция кода - это изменение кода игры, работающего с определёнными адресами памяти (жизней, здоровья, патронов, денег и так далее). Главная штука тут в том, что код всегда лежит в памяти по одним и тем же адресам, а трейнер и СЕ сам по себе могут с лёгкостью менять как данные, так и код, ибо в представлении компьютера и то и другое является просто цифрами. PS: У меня в подписи видеоблог, представляющий собой мои попытки научить взлому игр с нуля. Инъекция кода в это тоже входит, так что посмотри где-то первые пять уроков - там всё довольно-таки понятно (как мне кажется) и на примерах.