elvis66666 Опубликовано 16 августа, 2015 Поделиться Опубликовано 16 августа, 2015 (изменено) Добрый день, уже неделю бьюсь надо поиском указателей для текущего/максимального экранного значения HP.Перепробовал все настройки в pointer scaner , выставлял глубину до 10 вложений... Это ужас, ничего не находит. Читал на буржуйских сайтах темы, выкладывали указатели для игры v1.2(само собой они уже непригодны). Пробовал ручками искать (Read/Write access), тоже тупик - 2х уровневое вложение и фейковый статик. Есть у кого игра, поковыряйте ради интереса. Если кто-то уже сталкивался с подобными проблемами и знает решения, прошу поделиться.p.s. варианты с изменением кода не предлогать! >> 8BxxxxB8xxxxxxxx89xxxxxxxxxxxxxxxxxxxxxxxxxx сигнатура на работу с HP со смещением +-6c лежит текущее HP/максимальноетип: float Изменено 16 августа, 2015 пользователем elvis66666 Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 16 августа, 2015 Поделиться Опубликовано 16 августа, 2015 Здаров! А зачем тебе экранное значение HP?...интересно!Насчёт указателей...скорее всего не находятся из-за установленных патчей...тоже самое было и со второй частью игры. Походу затрагивается даже код жизней и т.д при патче игры.Вот поэтому все указатели динамичны. Явно тут без АА скрипта не обойтись.Кстати я играл игру только через эмуль. без интернета. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 16 августа, 2015 Поделиться Опубликовано 16 августа, 2015 Указатели я бы искал через два трейслога. 1. Ищешь адрес ХП2. Ищешь инструкцию1 на зпись ХП, которые срабатывают один раз при уроне3. Трейслог1 из глубины вверх от инструкции1 например на 5К инструкций до верхнего выхода из call4. Дальше по трейс логу в глубину смотришь дизассемблер и ставишь на узлы F5, и смотришь чтобы не прерывалась игра. Как начала прерываться, то делаешь трейслог 2 уже с вхождением в глубину, сбора стека на 10К инструкции(или более) с условием прерывания на EIP==0xинструкции1 Ну дальше по трейслогу 2 составляешь указатель до статического адреса, правда не факт, что он будет. Может быть и так, что есть динамический список с указателями на структуры. Структуры могут иметь отличия между собой в данных. Может быть функция, которая по этому списку будет перебирать по отличиям определенные объекты. Например, функция может искать указатель на структуру по типу класса GameObjectsFindWithType<Type>(), а может проверить твой игрок это или чужой по строке GameObjectsFindWithTag(string tag) или числу... Все, что может быть у тебя это статический указатель на динамический список, а структуры в нем могут тасоваться как угодно. [[[статический адрес дин. списка]+N*0x4]+0x6c] = XP где N случайное Во всяком случае, предсказать что-то сложно. Надо садиться, да и искать 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 16 августа, 2015 Автор Поделиться Опубликовано 16 августа, 2015 Спасибо Мастер! [[[статический адрес дин. списка]+N*0x4]+0x6c] = XPИменно такую иструкцию в игре я и встетил [eax+ecx*0x4] Не стоило возлагать большие надежды на поинтер скан, все сделал ручками, по старинке, трассировочкой...Нашел следующее:[[["Diablo III.exe"+0020C6D0] + 0x24] + 0x188] - текущее значение HP Здаров! А зачем тебе экранное значение HP?...интересно!Привет, для остлеживания текущего значения ХП героя/врагов и сравнения с максимальным.А потом применять меры(Добить, убежать, выпить бутылек ХП) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения