Что такое оффсеты и как их обновлять
|
|
danyrusdem
|
Дата: Среда, 21.06.2017, 19:59 | Сообщение # 1
|
Сообщений: 39
Статус:
|
Оффсет в переводе - смещение. Допустим у нас есть игрок в памяти по адресу 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 );
|
|
|
|
banduraolegsuper
|
Дата: Пятница, 11.08.2017, 20:05 | Сообщение # 2
|
Сообщений: 2
Статус:
|
Пасиба помог создайте тему где будете постоянно обновлять оффсеты |
|
|
|
админ7544
|
Дата: Понедельник, 18.09.2017, 09:43 | Сообщение # 3
|
Сообщений: 1
Статус:
|
nice |
|
|
|
yurikaplay
|
Дата: Понедельник, 05.02.2018, 16:04 | Сообщение # 4
|
Сообщений: 3
Статус:
|
спасибо |
|
|
|
yurikaplay
|
Дата: Понедельник, 05.02.2018, 16:04 | Сообщение # 5
|
Сообщений: 3
Статус:
|
круто все |
|
|
|