Перейти к содержанию

Почему в играх с DMA есть статика? [GTA 3]


Рекомендуемые сообщения

Всем привет, решил поламать игрушку GTA 3 и в процессе возник вопрос. Пускай игра и использует DMA, НО к примеру я нашёл X координату (которая естественно лежит по динамическому адресу) и с помощью отладчика по смещением перешёл к базовому адресу структуры игрока скажем так, которая тоже лежит в динамических адресах, то первый адрес этой структуры указывает уже на статику, тоже самое с машинами и вертолётами. Я посидел и немножко подумал, а что если базовый адрес структуры будто игрока или машины указывает на скажем так базовую структуру, которая уже определяет что это за объект в игровом мире (игрок, машина, вертолёт и тд.)

Опишу простенько по СИшному:

car->taxi->xCoordinate;
helicopter->policeHelicopter->xCoordinate;

И соотвественно при поиске задом наперёд скажем так можно прийти к этой базовой структуре, но вот в чём дилема, игра то у нас DMA, а адрес статический.

Вопрос, почему в играх с DMA всё же есть статические адреса?

P.S. при поиске указателей мы тоже в конце получаем статику, что собственно изначально но мысль о вопросе и навело.

Изменено пользователем Sergey99
Правка текста
Ссылка на комментарий
Поделиться на другие сайты

  • Sergey99 изменил название на Почему в играх с DMA есть статика? [GTA 3]

Небольшое дополнение к вопросу:

Выше я простенько описал последовательность того как расположены адреса памяти по СИшному, вот нормальный пример:

*Car taxi;
taxi->xCoordinate = X;
taxi->yCoordinate = Y;
taxi->ZCoordinate = Z;

Из этого понятно, что Car - это та самая базовая структура, а такси это уже указатель или адрес начала машины такси грубо говоря. Так вот Car хранится в статике.

Ссылка на комментарий
Поделиться на другие сайты

Так в программе разные типы памяти.
RAW DATA( или глобальные данные), стек и куча. 
вот твой указатель и есть глобальные данные, которые хранятся непосредственно в exe-шнике. 

Ссылка на комментарий
Поделиться на другие сайты

В 26.09.2022 в 19:59, KRYPTOPUNK сказал:

Так в программе разные типы памяти.
RAW DATA( или глобальные данные), стек и куча. 
вот твой указатель и есть глобальные данные, которые хранятся непосредственно в exe-шнике. 

То есть не важно DMA или нет если есть данные которые в exe файле то они по любому будут по статическим адресам расположены?

Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, Sergey99 сказал:

То есть не важно DMA или нет если есть данные которые в exe файле то они по любому будут по статическим адресам расположены?

Да, относительного базового адреса исполняемого файла. В случае DLL базовый адрес может быть непостоянным. Но смещение от базового адреса до статических данных всегда будет одинаковое.

Ссылка на комментарий
Поделиться на другие сайты

В 24.09.2022 в 20:34, Sergey99 сказал:

а адрес статический.

Я иногда делаю в трейнерах телепорты. Но и для меня загадка. Очень часто координаты зеленые то есть статистические, и указывают на модуль, Но в чём парадокс, модули эти меняются. То есть визуально адрес статистический, а реально динамический.

Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, Xipho сказал:

Да, относительного базового адреса исполняемого файла. В случае DLL базовый адрес может быть непостоянным. Но смещение от базового адреса до статических данных всегда будет одинаковое.

Теперь ясно, по такой логике скажем так для определенного патча игры можно не пытаться даже найти указатель. Достаточно находить адрес структуры, чтобы если например машин такси на карте 5 то и адресов CE найдет 5, можно даже сделать такой классный счётчик всех типов машин на карте.

P.S. уже проверял да это работает

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.