elvis66666

Diablo 3 2.2+ Поиск указателей на HP

4 сообщения в этой теме

Добрый день, уже неделю бьюсь надо поиском указателей для текущего/максимального экранного значения HP.

Перепробовал все настройки в pointer scaner , выставлял глубину до 10 вложений... Это ужас, ничего не находит. Читал на буржуйских сайтах темы, выкладывали указатели для игры v1.2(само собой они уже непригодны). Пробовал ручками искать (Read/Write access), тоже тупик - 2х уровневое вложение и фейковый статик.

 

Есть у кого игра, поковыряйте ради интереса.

 

Если кто-то уже сталкивался с подобными проблемами и знает решения, прошу поделиться.

p.s. варианты с изменением кода не предлогать!

 

>> 8BxxxxB8xxxxxxxx89xxxxxxxxxxxxxxxxxxxxxxxxxx сигнатура на работу с HP

 

со смещением +-6c лежит текущее HP/максимальное

тип: float

Изменено пользователем elvis66666
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здаров! А зачем тебе экранное значение HP?...интересно!

Насчёт указателей...скорее всего не находятся из-за установленных патчей...

тоже самое было и со второй частью игры. Походу затрагивается даже код жизней и т.д при патче игры.

Вот поэтому все указатели динамичны.  Явно тут без АА скрипта не обойтись.

Кстати я играл игру только через эмуль. без интернета.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Указатели я бы искал через два трейслога.

 

1. Ищешь адрес ХП

2. Ищешь инструкцию1 на зпись ХП, которые срабатывают один раз при уроне

3. Трейслог1 из глубины вверх от инструкции1 например на 5К инструкций до верхнего выхода из call

4. Дальше по трейс логу в глубину смотришь дизассемблер и ставишь на узлы F5, и смотришь чтобы не прерывалась игра. Как начала прерываться, то делаешь трейслог 2 уже с вхождением в глубину, сбора стека на 10К инструкции(или более) с условием прерывания на EIP==0xинструкции1 

 

Ну дальше по трейслогу 2 составляешь указатель до статического адреса, правда не факт, что он будет.

 

Может быть и так, что есть динамический список с указателями на структуры. Структуры могут иметь отличия между собой в данных.  Может быть функция, которая по этому списку будет перебирать по отличиям определенные объекты. Например, функция может искать указатель на структуру по типу класса GameObjectsFindWithType<Type>(), а может проверить твой игрок это или чужой по строке GameObjectsFindWithTag(string tag) или числу... Все, что может быть у тебя это статический указатель на динамический список, а структуры в нем могут тасоваться как угодно.

 

[[[статический адрес дин. списка]+N*0x4]+0x6c] = XP

 

где N случайное

 

Во всяком случае, предсказать что-то сложно. Надо садиться, да и искать

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо Мастер!

 

[[[статический адрес дин. списка]+N*0x4]+0x6c] = XP

Именно такую иструкцию в игре я и встетил [eax+ecx*0x4] ^_^

Не стоило возлагать большие надежды на поинтер скан, все сделал ручками, по старинке, трассировочкой...

Нашел следующее:

[[["Diablo III.exe"+0020C6D0] + 0x24] + 0x188] - текущее значение HP

 

 

Здаров! А зачем тебе экранное значение HP?...интересно!

Привет, для остлеживания текущего значения ХП героя/врагов и сравнения с максимальным.

А потом применять меры(Добить, убежать, выпить бутылек ХП)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас