что такое оффсеты в читах

Guide Чтож вы такое, Оффсеты?

    Thread starter bot Start date Dec 18, 2020

Очень часто на форуме встречаются посты, из которых видно, что многие не могут понять, что такое офсеты.
И я подумал, если попробовать «разжевать» данную тему, вопросов будет меньше.
Я не профессионал в программировании(просто хобби), потому, если будут недочёты, прошу извинить и поправить.

Для понимания попробуем подробно рассмотреть небольшой пример. Я думаю все понимают, что почти в любой программе существует динамическое выделение памяти.
Примером может быть программа, которая работает с различными массивами, размерность которых не всегда одна и та же. Например с массивом типа «вектор», в котором может быть заранее неизвестное количество элементов, и которые будут туда добавляться и удаляться динамически.

Для работы с динамически созданными экземплярами данных и нужны указатели.

Предлагаю написать простенькую программу, и на примере её разобрать что к чему.
Я буду использовать C++Builder6.

Создадим новый проект и сохраним в отдельную папку. Так же для удобства создадим два файла в папке проекта с названиями structs.h и structs.cpp. В них напишем наши тестовые структуры, которые и будем рассматривать.

Тут тестовая структура Party, содержащая указатель на цепочку добавляемых элементов, описывающих параметры членов пати PartyMember.

Тут же в главном модуле объявим глобальную переменную paty.

В событии создания формы мы должны добавить туда к примеру 3 члена, и вывести инфо о них.

Тестовая программка будет представлять собой примерно такое.
что такое оффсеты в читах. Смотреть фото что такое оффсеты в читах. Смотреть картинку что такое оффсеты в читах. Картинка про что такое оффсеты в читах. Фото что такое оффсеты в читах
Теперь давайте запустим её, подцепимся к ней с помощью Cheat Engine и попытаемся найти базовый адрес (и не только).
Сначала найдём ХП последнего члена в списке(если не с первого раза нашли, кнопкой уменьшаем ХП и отсеиваем, пока не останется одно значение).

В поле Description лучше сразу писать те значения, которые прибавляются к значениям регистров в окошке MoreInformation
что такое оффсеты в читах. Смотреть фото что такое оффсеты в читах. Смотреть картинку что такое оффсеты в читах. Картинка про что такое оффсеты в читах. Фото что такое оффсеты в читах
И далее как в вышеуказаной теме ищем адреса, пока не доберёмся до базового адреса(в данном случае базового адреса модуля Project1.exe, который кстати меняется после перезапуска).

Получится примерно такая картина.
что такое оффсеты в читах. Смотреть фото что такое оффсеты в читах. Смотреть картинку что такое оффсеты в читах. Картинка про что такое оффсеты в читах. Фото что такое оффсеты в читах
В итоге мы добравшись до базового адреса нашли эту самую цепочку офсетов(смещений), которая ведёт до значения ХП третьего члена пати.
BA + 48C4 + 8 + 8 + 4 = HP
Но что это за значения, и откуда они взялись? Давайте разбираться.

Чтоб было нагладнее, можно проилюстрировать наш примёр.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *