CHEATS. lol

Что такое Оффсеты? Как найти и обновить?

Что такое Оффсеты? Как найти и обновить?
Что такое Оффсеты?
Оффсет (Offset) - на простом языке, это смещение адреса в памяти. Например, в ячейке памяти есть игрок, по адресу 0x5100 (или любому другому), соответственно что этот объект содержит несколько ячеек данных: количество HP, процент брони, местоположение - координаты нахождения на карте, а также и другую информацию.

Как их найти и произвести обновление?
Вероятно вы зададитесь вопросом, как их найти и извлечь? Постараемся немного объяснить, на примере одновременно популярной и простой в этом плане игре Counter Strike: Global Offensive. Игровой движок Source имеет есть так называемые глобальные значения "Networked Variables" или же Netvar, сокращенный вариант. По сути, это обширные таблицы для каждого типа объекта. За известный адрес игрока, возьмем 0x5100, переносим игровой client.dll и загружаем в IDA- интерактивный дизассемблер. После открываем список строк через комбинацию клавиш Shitf + F12, в открывшимся окне и делаем поиск по строке, вписываем "Health" в переводе Здоровье (Игрока), после этого появится целый список с результатами.


На изображении выше, в после String есть много префиксов, но нужен именно тот, который имеет в начале "m_" - это член класса, в полном названии member. Для примера возьмем m_iHealth, который имеет следующий код:
class CBasePlayer
{
pad;
pad;
pad;
int m_iHealth; // 0xFC
}
Pad - это функция, в которой расположены другие члены класса, такие как:
  • int - integer "целое число";
  • float - число с плавающей запятой;
  • etc - оператор.
После двойного клика, вас перенесет на таблицу со следующей информацией:


Два раза кликаем по любому из столбиков, и перед глазами появляется очередная таблица:


Этими действиями, удалось найти Оффсет, который равен значению - 0xFC. Но на этом еще не все, осталось еще одно незаконченное действие, чтобы узнать внутренние значение, нужно выполнить код ниже, применяем его, так как тип данных integer:
void * player = getentity(....);
int health =   *(int*)((DWRD)player + 0xFC);
print( health );
5
4
6 комментариев 8 951 просмотр

6 комментариев

LEGEON
17 августа 2023 в 07:49
2
Лох какой-то,
а как посмотреть под какой dll патроны ?
помоги пж

как понять под какой dll патроны типо куда нажимать
Автор Лол
19 января 2023 в 12:47
3
а как найти оффсет игрока? меня всегда забавляют эти статьи, "За известный адрес игрока, возьмем 0x5100"
представим я ищу оффсет в D2, и че я возьму 0x5100? Нет конечно.
Статья из разряда, напишу кликбайт заголовок, а по факту напишу ерунду.
Лох какой-то
4 июля 2022 в 19:01
3
В кс 1.6 hw.dll, client.dll 
Лох какой-то
28 июня 2022 в 13:31
4
Maksim,
Тебе нужен чит енджин, ищешь например патроны, когда нашел смотришь под каким dll он стоит, там и будут эти патроны и тд, я так в кс 1.6 нашел dll
Cheats
16 ноября 2021 в 19:26
5
Maksim, Добрый вечер, какой именно игры?
Maksim
15 ноября 2021 в 04:33
5
Ну а как найти dll от другой игры? Я пытлся так и не нашел