Ну я качнул WinHex 17.5 http://www.winhex.com/winhex/index-m.html с родного сайта
А вот про SR-2 в ней ничего не знаю, но наверное это не важно
Кстактит Хирос у меня такой
Объявления |
---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
|
Re: Heroes2 - вставляем свои аватарыНу я качнул WinHex 17.5 http://www.winhex.com/winhex/index-m.html с родного сайта
А вот про SR-2 в ней ничего не знаю, но наверное это не важно Кстактит Хирос у меня такой
|
|
Re: Heroes2 - вставляем свои аватарыОй, я имел ввиду что золотая серия .. на скриншоте не указано
|
Re: Heroes2 - вставляем свои аватарыЧасть первая
1. Запускаем HMM2PL.exe и готовим сейв, в котором у одного из наших героев в магической книге будет присутствовать заклинание "Жажда крови". Далее нападаем, например, на отряд нейтралов (лучше на медленных, чтобы герой ходил первым: это немного облегчит нам жизнь). 2. Запускаем WinHex и получаем дамп оперативной памяти: Tools -> Open RAM... В окне Edit Main Memory ищем процесс Hmm2pl, жмём "плюсик" и выбираем Primary Memory. 3. Ищем "сигнатуру" отряда, на который Вы будете вешать "Жажду крови". Для этого сначала было бы неплохо записать куда-нибудь "сигнатуры" всех монстров. Выбираем Search -> Find Text... и вводим "сигнатуру" крестьянина: psnt. Справа от дампа вы увидите его текстовое представление. Там будут последовательно перечислены "сигнатуры" всех монстров в игре: psnt, arch, arch, pike, pike, swdm, swdm и т.д. Если у Вас этого нет, нажмите F3, чтобы продолжить поиск. 4. Теперь, когда Вы знаете "сигнатуры" Ваших отрядов, найдите отряд, на который Вы хотите повесить заклинание, по "сигнатуре" (желательно, чтобы в Вашей армии было несколько отрядов). Пусть, например, у меня в армии есть Кентавры и Горгульи и я собираюсь направить заклинание "Жажда крови" на Горгулий. Я ищу "сигнатуру" garg до тех пор, пока она не встретится вместе с "сигнатурами" других отрядов. "Сигнатуры" отрядов будут идти в том порядке, в котором расположены Ваши отряды на поле боя (сверху вниз). На картинке показана найденная "сигнатура" Горгулий. В моём отряде сверху расположены только Кентавры, поэтому я скроллю чуть вверх, чтобы убедиться, что нашёл именно то место в дампе, которое мне нужно. Ага, Кентавры тоже на месте, значит, всё в порядке. Если у Вас более двух отрядов, убедитесь, что все остальные "сигнатуры" на месте. 5. Теперь нужно найти значение атаки отряда. У Кентавров атака равна 3, защита - 1. У Горгулий атака - 4, защита - 7. Если теперь Вы отсчитаете 5 байтов от начала "сигнатуры" (первой её буквы) вверх по дампу, т.е. в сторону уменьшения адресов, то как раз попадёте на значение атаки отряда, следом будет идти защита, а потом - минимальный и максимальный урон. Запишите найденный адрес. Например, я нашёл значение атаки Горгулий в строке "022A2730" и столбце "F", значит, адрес, по которому хранится это значение будет равен 022A2730 + F = 022A273F (его то и нужно запомнить). 6. Итак, у нас запущена игра и открыт WinHex. Запускаем IDA. Открываем уже созданную базу данных или, если Вы её потеряли/удалили, выполняем анализ исполняемого файла повторно. После этого подключаемся к процессу с игрой: Debugger -> Attach to process... и в списке выполняющихся процессов находим нужный нам. Игра будет приостановлена, а на экране Вы увидите несколько окошек со значением регистров процессора, дамп стека и пр. информацию. Нам же нужно открыть окно с псевдокодом загруженного в оперативную память образа игры: View -> Open subviews... -> Disassembly. Растяните появившееся окно на своё усмотрение. Для того, чтобы найти нужный нам адрес (у меня это 022A273F, у Вас будет другой), нажмите G и в окошко Jump to address введите 022A273F. Вы должны будете увидеть примерно следующее: Как Вы уже догадались, перед Вами параметры нашего отряда Горгулий. 7. Установите курсор на строчку с атакой и нажмите F2, чтобы установить брейкпоинт. В появившемся окошке Breakpoint settings выберите режим Write (Modes: Write) и проконтролируйте, чтобы брейкпоинт был аппаратным: должен стоять флажок напротив пункта Hardware breakpoint. Нажмите OK, и строчка с атакой подсветится красным цветом. 8. Продолжите выполнение игры (F9) и направьте на горгулий заклинание "Жажда крови". Игра снова прервётся, а IDA выдаст сообщение о том, что "сработал" установленный брейкпоинт: "Hardware data breakpoint at 022A273F has been triggered". Нажмите OK и перейдёте к "окрестности" того самого места, которое мы ищем: в окне IDA View-EIP вы увидите инструкцию, при выполнении которой сработал брейкпоинт (см. инструкцию перед строчкой, выделенной синим цветом): В данном случае сработал брейкпоинт при чтении из памяти значения атаки рассматриваемого отряда Горгулий (инструкция mov cl, [eax+0C6h]). Синим цветом выделена следующая за ней инструкция, которая как раз нам и нужна: add cl, 3. Поздравляю! 80% работы выполнено. Обязательно запишите адрес этой инструкции и не забудьте убрать брейкпоинт: Debugger -> Breakpoints -> Breakpoint list: в окне Breakpoint выделите нужный брейкпоинт (он пока там один) и нажмите клавишу Delete. * * * После того, как Вы повторите описанные шаги, я продолжу. Сразу скажу, что Вы найдёте в точности такой же адрес, какой нашёл я Однако, если Вы решите изменить инструкцию в другой версии игры, Вам понадобится пройти описанный путь с самого начала. P.S. Изменил пост, чтобы текст соответствовал скриншотам Последний раз редактировалось AlexSpl 23 окт 2022, 01:22, всего редактировалось 7 раз(а).
|
|
Re: Heroes2 - вставляем свои аватарыТак, то что у меня уже получилось:
я сделал сейв героя с кентаврами и гаргульями и жаждой крови в наличии Этим героем я напал на нейтралов и запустил winHex Далее я выполнил пункт второй (Запускаем WinHex и получаем дамп оперативной памяти: Tools -> Open RAM... В окне Edit Main Memory ищем процесс Hmm2pl, жмём "плюсик" и выбираем Primary Memory.) Далее в этом winHex, который я первый раз в глаза вижу, используя поиск - я натыкался на названия войск в целом. и на нашел своих гаргулей - о чём я понял лишь потому что картинка ровно такая как у вас на экране. Далее правильно ли я нашел цифру 7 - атаку гаргулей ? (подчеркнуто синим)
|
Re: Heroes2 - вставляем свои аватарыНет. Поставьте курсор на первую букву сигнатуры garg, т.е. на букву g, и нажмите клавишу "стрелка влево" пять раз. Под курсором у Вас окажется число 04 (атака), за ним будет следовать 07 (защита), 02 (минимальный урон) и 03 (максимальный урон). Посмотрите, в какой строке расположен курсор в дампе, сложите значение строки со значением столбца и получите адрес, по которому хранится атака Ваших Горгулий. Также убедитесь, что над Горгульями расположены Кентавры, проскроллив дамп чуть вверх.
Последний раз редактировалось AlexSpl 12 апр 2014, 19:31, всего редактировалось 1 раз.
|
|
Re: Heroes2 - вставляем свои аватарыИ вообще сигнатура войска ( то есть его описание ) - это как на ваших- картинках квадрат 8 на 11, который начинается с 12 букв я ??? )
я правильно понимаю |
Re: Heroes2 - вставляем свои аватарыСигнатура монстра - это последовательность из четырёх букв. Для Горгулий - это "garg", для Кентавров - "cntr", для крестьян - "psnt" и т.д.
|
|
Re: Heroes2 - вставляем свои аватарыAlexSpl писал(а): У меня после 04, 06 идет |
Re: Heroes2 - вставляем свои аватарыЦитата: Как же? На Вашей картинке после 04 идёт 07. Смотрите на значение на пять символов левее слова "garg". Я даже подскажу адрес: 021D2320 + 7 = 021D2327. Его-то и следует использовать дальше. Только не закрывайте игру, иначе адрес изменится. |
|
Re: Heroes2 - вставляем свои аватарыАх) дальше надо уже вправо нажимать стрелочку ))) тогда да - 7
И да, адрес: 021D2320 + 7 = 021D2327 Так, иду дальше по инструкции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2