Объявления
Поздравляем
Roman2211


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

База данных IDA от void17

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
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: База данных IDA от void17

Сообщение AlexSpl » 29 ноя 2021, 14:47

Перенёс сигнатуры. Вечером залью базу снова.

Цитата:
Будьте аккуратны, когда сами это делаете. У меня просто "рука набита" и я кучу трюков и ловушек знаю.

army::adjust_damage() не перепутаешь: она только из army::DamageEnemy() вызывается.

Хаха, сейчас присмотрелся, и дейтсвительно, это не та сигнатура :smile1: Что ж, первый блин вышел комом, зато второй получится экзешником (надеюсь) :smile4:
Последний раз редактировалось AlexSpl 29 ноя 2021, 14:54, всего редактировалось 1 раз.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 29 ноя 2021, 14:52

Если так, то ладно, хорошо, спасибо. Но я все равно проверю. Реально, перенос сигнатур нужно очень аккуратно и внимательно производить.

Расскажите, что за сегодня сделали. Поместите потом в changelog
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 29 ноя 2021, 14:57

Цитата:
Хаха, сейчас присмотрелся, и дейтсвительно, это не та сигнатура Что ж, первый блин вышел комом, зато второй получится экзешником (надеюсь)


Я и говорю. Без моей проверки лучше не делать перенос и изменение сигнатур, я очень тщательно перепроверяю. Доверьте дело профессионалу так сказать

Когда-нибудь, когда руки дойдут, я пропишу гайд. А пока пишите так:
Код: Выделить всё
void_17, восстановите сигнатуры:
адрес
адрес
адрес...
Последний раз редактировалось void_17 29 ноя 2021, 15:00, всего редактировалось 1 раз.
Вернуться к началу

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: База данных IDA от void17

Сообщение AlexSpl » 29 ноя 2021, 14:59

Цитата:
Может видеогайд записать?

Не помешает :smile20: Но я ещё не смотрел декомпилят Гидры. С ним легче будет.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 29 ноя 2021, 15:01

Что сегодня разбирали, какие измнения вносили?
 
Нужно, кстати, полностью combatManager разобрать
Вернуться к началу

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: База данных IDA от void17

Сообщение AlexSpl » 29 ноя 2021, 15:10

Так, меня сбила с толку сигнатура public: long army::DamageEnemy(army *,int *,int *,bool), но это не функция 0x443C60:

Код: Выделить всё
.text:0044251A     loc_0044251A:
.text:0044251A 018 fstp    qword ptr [ebp-10h] ; Store Real and Pop
.text:0044251D 018 fild    [ebp+count]     ; Load Integer
.text:00442520 018 mov     edx, dword ptr [ebp+fSimulation]
.text:00442523 018 push    ebx
.text:00442524 01C mov     ebx, dword ptr [ebp+shoot]
.text:00442527 01C push    edi
.text:00442528 020 fstp    qword ptr [ebp-8] ; Store Real and Pop
.text:0044252B 020 fld     qword ptr [ebp-8] ; Load Real
.text:0044252E 020 fmul    qword ptr [ebp-10h] ; Multiply Real
.text:00442531 020 push    0               ; fireShieldDmg
.text:00442533 024 push    edx             ; hexDistance
.text:00442534 028 push    1               ; fSimulation
.text:00442536 02C push    ebx             ; canShoot
.text:00442537 030 call    ftol            ; Call Procedure
.text:0044253C 030 mov     edi, [ebp+a2]
.text:0044253F 030 push    eax             ; damage
.text:00442540 034 push    edi             ; enemy
.text:00442541 038 mov     ecx, esi        ; this
.text:00442543 038 call    long army::DamageEnemy(army *,int *,int *,bool) ; Call Procedure

Вот моя сигнатура: int __thiscall army::DamageEnemy(army *this, army *enemy, int *damage, bool canShoot, bool fSimulation, int hexDistance, int fireShieldDmg). И по количеству выталкиваемых из стека аргументов совпадает.
Последний раз редактировалось AlexSpl 29 ноя 2021, 15:13, всего редактировалось 1 раз.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 29 ноя 2021, 15:13

Завтра посмотрю и исправлю, если что-то не так с сигнатурами.
upd: Иногда аргументы одной и той же функции в SoD и RoE разнятся, бывает.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 29 ноя 2021, 15:36

AlexSpl, RoseKavalier написал скрипты. :smile21:
Заходите в дискорд и смотрите инструкцию!
Наша работа будет проще
Вернуться к началу

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: База данных IDA от void17

Сообщение AlexSpl » 29 ноя 2021, 15:53

Кажется, я разгадал загадку функции 0x443560. Это функция-враппер для army::ComputeAttackerDamageBonuses(). Всё, что она делает, вызывает army::ComputeAttackerDamageBonuses() и дополнительно считает бонусы к урону для Dread Knights и Ballista (двойной урон). А судя по вызову Random() в army::ComputeAttackerDamageBonuses() в RoE, бонусы к урону для Dread Knights и Ballista считает сама эта функция. А ещё у 0x443560 аргументы полностью совпадают. Назову 0x443560 army::ComputeAttackerDamageBonuses() а army::ComputeAttackerDamageBonuses() переименую в army::ComputeAttackerDamageBonuses2().
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 29 ноя 2021, 15:59

Лучше не делайте так. Пишите army_ComputAttackDamageBonusesWrap или типо того. Я таким образом маркирую те функции, которые написали уже в SoD, но сигнатуры в RoE этой функции нет, чтобы не запутаться потом.
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

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

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