Объявления

Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

Редактирование ресурсов и кода игры

Не запускается игра? Проблемы со звуком? Где, в конце концов, взять игру, скачать патчи, приложения и карты? Как установить все это? Все проблемы обсуждаем в этом разделе
offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение AlexSpl » 12 апр 2014, 19:58

7 - это защита отряда :) Нас интересует только 4 (атака). Адрес правильный.

Если возникнут проблемы с дизассемблированием, не забудьте убедиться в том, что проставили флажки напротив "Imported DLL options" и "Analysis options" в окне "PE Executable file loading Wizard" в самом начале. Хотя для нашего простого случая это не должно быть критично.
Вернуться к началу

offlinelimiltless123  
Подмастерье
Подмастерье
 
Сообщения: 108
Зарегистрирован: 09 апр 2014, 15:28
Пол: Не указан
Поблагодарили: 15 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение limiltless123 » 12 апр 2014, 20:25

Неувязочка вышла)
я вчера программкой одной стоимость жажды ярости повысил до 30 ман))
И естественно не смог в совем сейве намутить столько ман, пришлось всё заново делать
А сделав всё заново, что то уже в Winhex гаргулей не могу найти - как раньше ( какие то не такие попадаются)

Вообщем пасибо огромное) давай на сегодня уже всё ?
завтра продолжим если ты не против ) а то я уже отрубаюсь
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение AlexSpl » 12 апр 2014, 20:30

Цитата:
Неувязочка вышла)
я вчера программкой одной стоимость жажды ярости повысил до 30 ман))

Значит, прежде чем продолжать, восстановите оргинальный исполняемый файл (HMM2PL.exe). Хотя это не должно как-нибудь повлиять на процесс изменения значения прироста атаки :) Хотя, подозреваю, что Вы использовали UBP, автор которой я, так что можете быть спокойны :) Скорее всего, Вы просто закрыли игру (адрес, по которому хранится структура данных, содержащая сведения об отряде на поле боя, меняется при каждом запуске игры). Также убедитесь в том, чтобы в армии противника не было Горгулий, иначе Вы можете найти их, а не своих.

Цитата:
Вообщем пасибо огромное) давай на сегодня уже всё ?
завтра продолжим если ты не против ) а то я уже отрубаюсь

OK
Последний раз редактировалось AlexSpl 12 апр 2014, 20:56, всего редактировалось 2 раз(а).
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение AlexSpl » 12 апр 2014, 20:47

Вкратце опишу дальнейшие действия.

1. Потребуется узнать машинный код, соответствующий ассемблерной инструкции add cl, 3: 80 С1 03.

2. Открыть в WinHex'е исполняемый файл игры (HMM2PL.exe) и найти данную инструкцию. Её адрес указан на приведённом ранее скриншоте:

См. самое левое значение в статусной строке: 0001FBAE (адрес инструкции в образе за вычетом базы).

3. Изменить данную инструкцию на нужную Вам. Тут всё просто. Если Вы хотите поменять число 3 на, скажем, число 5, то пропишите вместо 80 С1 03 следующую последовательность из трёх байтов: 80 С1 05 (закономерность должна быть понятна). Последнее число, разумеется, должно быть шестнадцатеричным и не превышать 127, иначе Вы не увеличите атаку, а уменьшите.

4. Сохранить изменённый исполняемый файл, после чего убедиться, что при снятии заклинания "Жажда крови" значение атаки отряда корректно восстанавливается до исходного (скорее всего, при снятии "Жажды крови" выполняется инструкция типа sub cl, 3, которую, разумеется, также придётся изменить на нужную нам).
Последний раз редактировалось AlexSpl 23 окт 2022, 01:22, всего редактировалось 1 раз.
Вернуться к началу

offlinelimiltless123  
Подмастерье
Подмастерье
 
Сообщения: 108
Зарегистрирован: 09 апр 2014, 15:28
Пол: Не указан
Поблагодарили: 15 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение limiltless123 » 13 апр 2014, 07:49

...
Последний раз редактировалось limiltless123 13 апр 2014, 10:55, всего редактировалось 2 раз(а).
Вернуться к началу

offlinelimiltless123  
Подмастерье
Подмастерье
 
Сообщения: 108
Зарегистрирован: 09 апр 2014, 15:28
Пол: Не указан
Поблагодарили: 15 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение limiltless123 » 13 апр 2014, 10:24

Так вот, я всё по новой переустановил)
И вышел на заветную строку в IDA 0041FBAE add cl, 3

Единственное мне пришлось подогнать название строки в WinHex по вашему образцу
Потому что я не знаю сколько будет 026F2F00 + 2

--------------------------------
ИДУ ДАЛЬШЕ ПО ИНСТРУКЦИИ
Вернуться к началу

offlinelimiltless123  
Подмастерье
Подмастерье
 
Сообщения: 108
Зарегистрирован: 09 апр 2014, 15:28
Пол: Не указан
Поблагодарили: 15 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение limiltless123 » 13 апр 2014, 10:39

AlexSpl писал(а):

Вкратце опишу дальнейшие действия.

1. Потребуется узнать машинный код, соответствующий ассемблерной инструкции add cl, 3: 80 С1 03.

80 С1 03 - это что и откуда взялось ?
AlexSpl писал(а):

2. Открыть в WinHex'е исполняемый файл игры (HMM2PL.exe) и найти данную инструкцию. Её адрес указан на приведённом ранее скриншоте:

Мы ещё ни разу не искали инструкции в WinHex, только строки
Адрес если я правильно понимаю - 0041FBAE
AlexSpl писал(а):

3. Изменить данную инструкцию на нужную Вам. Тут всё просто. Если Вы хотите поменять число 3 на, скажем, число 5, то пропишите вместо 80 С1 03 следующую последовательность из трёх байтов: 80 С1 05 (закономерность должна быть понятна). Последнее число, разумеется, должно быть шестнадцатеричным и не превышать 127, иначе Вы не увеличите атаку, а уменьшите.

А где вы нашли 80 С1 03 ?:) я извиняюсь за незнание WinHex

IDA и Героев можно закрыть ?
Блин, да как же искать инструкции в WinHex
у меня есть Find Text
Find Hex Values - эта команада такого 0041FBAE не находит

Не знаю где и как найти инструкцию в WinHex, хнык) help
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение AlexSpl » 13 апр 2014, 15:07

Часть вторая

После выполнения шагов 1-8, описанных в части первой данной инструкции, у Вас должны быть запущены: игра, в которой Вы напали на отряд нейтралов и повесили на один из отрядов "Жажду крови"; WinHex и IDA, где в окне IDA View-EIP видна интересующая нас инструкция (add cl, 3) вместе с её адресом в образе исполняемого файла, загруженного в оперативную память (0041FBAE).

9. Установите курсор в строку с найденной инструкцией (add cl, 3) и выберите пункт меню View -> Open subviews -> Hex dump для того, чтобы увидеть машинную команду, соответствующую данной ассемблерной инструкции. В появившемся окне Вы увидите примерно следующее:

Зелёным цветом выделены три байта: 80, С1 и 03. Это и есть искомая машинная команда: 80 С1 03.

 Примечание
Если по какой-то причине в окне Hex View подсвечена другая инструкция, вызовите контекстное меню окна Hex View правой кнопкой мыши и выберите пункт Synchronize with -> IDA View-EIP (заголовок окна изменится на Hex View-EIP), а затем в окне IDA View-EIP снова установите курсор в строку с интересующей инструкцией (add cl, 3). Если Вы потеряли эту инструкцию, её всегда можно найти по адресу 0041FBAE (выбрав пункт меню Jump -> Jump to address... или нажав горячую клавишу G).


Обязательно запишите её адрес в исполняемом файле на диске: 0001FBAE (он указан в статусной строке слева).

10. Можно было бы уже переходить к поиску и замене найденной машинной команды в исполняемом файле игры, но сначала давайте всё-таки посмотрим, каким образом значение атаки отряда возвращается к исходному после того, как действие заклинания "Жажда крови" истечёт. В части первой я советовал убрать установленный брейкпоинт. Это было нужно для того, чтобы выполнение игры не прервалось в самом неожиданном месте при запуске игры в следующий раз. Дело в том, что адреса структур данных в оперативной памяти меняются при каждом запуске приложения, поэтому найденный нами ранее адрес, по которому хранится значение атаки отряда Горгулий, при следующем запуске игры был бы уже другим.

Итак, снова установим брейкпоинт на запись по адресу 022A273F (у Вас он будет другим), продолжим игру (F9) и подождём, пока не закончится действие заклинания "Жажда крови", т.е. ровно три раунда. После того, как третий раунд подойдёт к концу, игра прервётся по только что установленному брейкпоинту. Нажмите OK и увидите инструкцию, при выполнении которой произошёл останов, сверху от строчки, выделенной синим цветом.

Чуть выше Вы можете видеть инструкцию sub cl, 3, которая вычитает число 3 из значения регистра cl. На языке игры это означает, что при снятии заклинания "Жажда крови" атака отряда уменьшается на 3 ед.

Теперь Вам должно быть понятно, зачем мы проделали этот дополнительный объём работы. Ведь если бы мы просто заменили первую инструкцию (add cl, 3), но оставили бы без изменения вторую (sub cl, 3), то столкнулись бы с неприятными последствиями в виде неправильно работающего заклинания "Жажда крови".

Аналогично пункту 9 находим машинный код, соответствующий ассемблерной инструкции sub cl, 3, а также записываем её адрес.

11. Время менять инструкции. Сначала выйдем из режима отладки: Debugger -> Detach from process, затем закроем IDA, не забыв сохранить базу данных (просто нажмите OK при закрытии IDA), закроем вкладку Primary Memory (ПКМ -> Close) в WinHex и выйдем из игры. Таким образом, у нас останется открытым только WinHex.

Теперь следует открыть исполняемый файл игры в WinHex'е: File -> Open..., перейти по найденным адресам и изменить машинные команды add cl, 3 и sub cl, 3 на нужные нам.

В качестве примера я увеличу прирост атаки отряда на 5 ед. (вместо 3 ед.) при наложении на отряд "Жажды крови". Для этого сначала перейдём по первому найденному адресу. Обязательно убедитесь в том, что значения адресов в колонке Offset являются шестнадцатеричными, а не десятичными. Если они всё-таки десятичные, кликните один раз по колонке. Теперь нажмите Alt+G и в появившееся окошко введите первый найденный нами адрес: 0001FBAE (вводить можно и без ведущих нулей, при вводе также неважен и регистр букв). Если всё сделано правильно, то курсор будет установлен на первый байт машинной команды 80 С1 03 (add cl, 3). Измените её на 80 С1 05 (add cl, 5). Аналогичным образом замените инструкцию sub cl, 3 на sub cl, 5.

Теперь осталось только сохранить внесённые в исполняемый файл игры изменения: File -> Save As..., закрыть WinHex и запустить игру, чтобы убедиться, что всё работает.
Последний раз редактировалось AlexSpl 23 окт 2022, 01:21, всего редактировалось 1 раз.
Вернуться к началу

offlinelimiltless123  
Подмастерье
Подмастерье
 
Сообщения: 108
Зарегистрирован: 09 апр 2014, 15:28
Пол: Не указан
Поблагодарили: 15 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение limiltless123 » 13 апр 2014, 18:27

Я сегодня опять к вечеру физически очень устал и уже мало чего соображаю - но до места "увеличить значение жажды крови" данный квест всё же прохожу, в моем примере я пытаюсь заменить 3 на 30
Для чего как минимум нужна лицензионная версия
Вложения
123.jpg
123.jpg (239.09 КБ) Просмотров: 806
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Heroes2 - вставляем свои аватары

Сообщение AlexSpl » 13 апр 2014, 18:34

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

Пред.След.

Вернуться в Техническая часть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron