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

Статус
В этой теме нельзя размещать новые ответы.
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
21 Авг 2014
Сообщения
99
Реакции
67
Оффсет в переводе - смещение. Допустим у нас есть игрок в памяти по адресу 0x5000, у этого объекта есть разные данные: координаты/здоровье/броня. Как их искать? Возьму в пример CS:GO т.к там проще всего. В движке сурс есть так называемые networked variables (netvar). Целые таблицы к каждому типу объекта. Допустим у нас уже есть известный адрес игрока 0x5000, мы берем client.dll от игры и загружаем ее в IDA. Далее открывам список строк (shitf + f12) и делаем поиск по строке, пишем "health", там выдаст достаточно много результатов
aef5c3c13a.png

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

Делаем двойной клик на любой xref и видим
2fbdf88fb4.png

И так мы нашли оффсет, который равен 0xFC.
Теперь, чтобы узнать какое там значение делаем следующее
т.к тип данных int
Код:
Expand Collapse Copy
void * player = getentity(....);
int health =   *(int*)((DWRD)player + 0xFC);
print( health );
Задавайте вопросы в теме.
 
Ну ты конечно детей запряг. Там ведь можно дампером эти оффсеты получить.
 
Ну ты конечно детей запряг. Там ведь можно дампером эти оффсеты получить.

АГа, а если люди будут писать хаки, например, то им сурсы дампера вставлять?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как обновить?
 
что за прога
 
вот смотри, у меня есть оффсет угла обзора, как мне его использовать чтобы изменять этот угол???
 
А что на счет Pattern-scanning,как обновлять их?
 
А серьёзно, что за прога то?
 
А есть программы на подобия IDA?
 
Мануальчик годный , но "Не знающих" ты конечно испугал :NotLikeThis:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Оффсет в переводе - смещение. Допустим у нас есть игрок в памяти по адресу 0x5000, у этого объекта есть разные данные: координаты/здоровье/броня. Как их искать? Возьму в пример CS:GO т.к там проще всего. В движке сурс есть так называемые networked variables (netvar). Целые таблицы к каждому типу объекта. Допустим у нас уже есть известный адрес игрока 0x5000, мы берем client.dll от игры и загружаем ее в IDA. Далее открывам список строк (shitf + f12) и делаем поиск по строке, пишем "health", там выдаст достаточно много результатов
aef5c3c13a.png

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

Делаем двойной клик на любой xref и видим
2fbdf88fb4.png

И так мы нашли оффсет, который равен 0xFC.
Теперь, чтобы узнать какое там значение делаем следующее
т.к тип данных int
Код:
Expand Collapse Copy
void * player = getentity(....);
int health =   *(int*)((DWRD)player + 0xFC);
print( health );
Задавайте вопросы в теме.
Годно ты научи их еще индексы виртуальных функций искать
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Данная статья была была использована на "European Scientific Congerence 2017", которая проходила 7 июня 2017 года в городе Пенза. Наш форум был указан даже в качестве "списка литературы".

654b42d4bdc0758741f59110c689a473.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
@GOVARD Рофл. Бесплатный пиар.
 
Так изи нет? В offets заходишь и выбираешь !
 
  • Мне нравится
Реакции: Lunn
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу