|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Считывание Динамических значений памяти
Всем привет!
Суть проблемы заключается в следующем: Нужно считать значение HP из игры, ищем адрес в котором хранится значение, получаем его, все ок. Запускаем игру заново, адрес с ХП уже другой, собственно как вычислить текущий адрес с хп? вот примеры адресов с ХП : 0CBE2628 0CBEDA28 0CAB2928 0CBD2928 0CCD1728 0CAB2C28 0CABDD28 0CAADD28 |
#2
|
||||
|
||||
Кэп подсказывает, что HP - поле какого-то класса. Как следствие из того, что адреса разные, класс выделяется динамически. Поскольку HP используется постоянно, логично предположить, что до класса, содержащего HP, можно добраться, отталкиваясь от какой-то глобальной переменной. А вот определить, как именно - вариант только один: реверсить код игры. По идеи будет либо глобальный указатель на этот класс, либо массив таких указателей, либо список таких указателей, либо указатель на класс, в котором есть: указатель на этот класс, либо массив таких указателей, либо ......
Когда делал патч к одной игре, вытащил из игры небольшое API, позволяющее добраться до классов игроков и юнитов по их ID, также зареверсил формат плеера и юнита, после чего можно было делать все, что угодно. Естественно, все эти "API" функции были методами каких-то классов. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 17.11.2012 в 19:48. |