Что такое оффсеты, как их искать и использовать

Статус
В этой теме нельзя размещать новые ответы.
Начинающий
Статус
Оффлайн
Регистрация
24 Авг 2016
Сообщения
41
Реакции[?]
82
Поинты[?]
0
Мб вопрос не совсем по теме но к примеру у меня есть сигнатура такого вида
Код:
"\x55\x8B\xEC\xA1\x00\x00\x00\x00\x53\x56\x57\x8B\xF9\x8B\x08\x8B\x01", "xxxx????xxxxxxxxx"
но у меня в сурсах используются такие сигнатуры
Код:
"0F 11 05 ? ? ? ? 83 C8 01" + 3
как мне конвертировать 1 в формат 2?
 
Начинающий
Статус
Оффлайн
Регистрация
5 Сен 2017
Сообщения
6
Реакции[?]
0
Поинты[?]
0
это что такое?и куда это вписывать?
void * player = getentity(....);
int health = *(int*)((DWRD)player + 0xFC);
print( health );
 
Новичок
Статус
Оффлайн
Регистрация
8 Янв 2019
Сообщения
1
Реакции[?]
0
Поинты[?]
0
НУ вот я перешел и не вижу оффсетаСнимок.PNG
 
Последнее редактирование:
trinityshoop.ru
Забаненный
Статус
Оффлайн
Регистрация
11 Дек 2020
Сообщения
82
Реакции[?]
4
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Какой дампер посоветуете?
 
trinityshoop.ru
Забаненный
Статус
Оффлайн
Регистрация
11 Дек 2020
Сообщения
82
Реакции[?]
4
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Спасибо, а для раста?
 
Начинающий
Статус
Оффлайн
Регистрация
10 Апр 2019
Сообщения
17
Реакции[?]
1
Поинты[?]
0
Оффсет в переводе - смещение. Допустим у нас есть игрок в памяти по адресу 0x5000, у этого объекта есть разные данные: координаты/здоровье/броня. Как их искать? Возьму в пример CS:GO т.к там проще всего. В движке сурс есть так называемые networked variables (netvar). Целые таблицы к каждому типу объекта. Допустим у нас уже есть известный адрес игрока 0x5000, мы берем client.dll от игры и загружаем ее в IDA. Далее открывам список строк (shitf + f12) и делаем поиск по строке, пишем "health", там выдаст достаточно много результатов

но нам нужен именно с префиксом m_ (означает member, то есть член класса).
Листаем и видим m_iHealth, что означает примерно такое
Код:
class CBasePlayer
{
pad;
pad;
pad;
int m_iHealth; // 0xFC
}
pad - там расположены другие члены класса(int,float,etc).
Делаем двойной клик и нас кидает на такую картину

Делаем двойной клик на любой xref и видим

И так мы нашли оффсет, который равен 0xFC.
Теперь, чтобы узнать какое там значение делаем следующее
т.к тип данных int
Код:
void * player = getentity(....);
int health =   *(int*)((DWRD)player + 0xFC);
print( health );
Задавайте вопросы в теме.
А как начальный адресс искать? Он же изменяется часто. Нужно через указатель или как? Можешь показать/гайд?)
 
Забаненный
Статус
Оффлайн
Регистрация
31 Дек 2020
Сообщения
10
Реакции[?]
10
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу