Объявления

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

RMG SOD

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: RMG SOD

Сообщение RoseKavalier » 10 апр 2020, 12:40

You can create a new derived struct for this purpose:

Код: Выделить всё
#pragma pack(push, 1)
struct RMG_LocalMap : RMG_Map // this line gives all members from RMG_Map to RMG_LocalMap, as well as member functions
{
    h3unk _f_18[32]; // verify this I just went with RMGMap2[2].VMT as being Vector::end, or populate it with relevant data
    // +24
    H3Vector<RMG_Object*> localObjects;
};
#pragma pack(pop)


When in IDA, I don't think you can derive classes (or at least I haven't figured out how) so I tend to just make a `base` member of the base class at offset 0.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 10 апр 2020, 14:09

Thanks, but it does not works welll.
H3RMG.h:
 
Изображение

localObjects:
 
Изображение


I don't know how to find correct address for H3Vector<RMG_Object*> localObjects
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: RMG SOD

Сообщение RoseKavalier » 10 апр 2020, 14:23

Padding was incorrect, which is why I wrote to verify it)
Код: Выделить всё
#pragma pack(push, 1)
struct RMG_LocalMap : RMG_Map // this line gives all members from RMG_Map to RMG_LocalMap, as well as member functions
{
    h3unk _f_18[16]; // correct padding, was mislead by IDA's disassembly writing RMGMap2[2].VMT, thinking that meant 2x
    // +28
    H3Vector<RMG_Object*> localObjects;
};
#pragma pack(pop)


IDA
Код: Выделить всё
00000000 RMG_LocalMap        struc ; (sizeof=0x38, mappedto_514)
00000000 base                RMG_Map ?
00000018 field_18            dd ?
0000001C field_1C            dd ?
00000020 field_20            dd ?
00000024 field_24            dd ?
00000028 localObjects        Vector__RMGObject ?
00000038 RMG_LocalMap        ends
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 10 апр 2020, 15:12

Looks better.
But size of localObjects is always 16 so there are some garbage objects with correct objects.
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: RMG SOD

Сообщение RoseKavalier » 10 апр 2020, 18:16

I guessed the vector type from static analysis, obviously a proper analysis is needed here - I assume you're up to it given all the great modifications you've managed to make on your own this last few months)
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 11 апр 2020, 07:12

I have no idea what else except a vector it can be. In any case, it's just a matter of code optimization.
So I leave everything as it is with my own vector and 2 low hooks.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 11 апр 2020, 07:16

А как поставить точку остановки на условие RMG_MapItem.RMG_GroundTile.landType == 8?
Вернуться к началу

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: RMG SOD

Сообщение AlexSpl » 11 апр 2020, 07:39

В Студии или в IDA? В IDA необходимо заполнить поле Condition в диалоге Breakpoint settings.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 11 апр 2020, 08:20

В IDA, мне нужно выйти на код, который это делает.
Просто просмотром я его не нашел.
Мне бы синтаксис этого условия, я как-то пробывал ставить точку остановы с условием, но IDA просто вылетала, там какая-то своя логика.
Вернуться к началу

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: RMG SOD

Сообщение AlexSpl » 11 апр 2020, 08:25

Всё же придётся найти код :smile1: Смысл условия в фильтрации. Т.е. мы ставим брейкпоинт, задаём условие и выполнение программы прерывается, когда условие удовлетворяется, а не каждый раз, когда выполняется команда.
Вернуться к началу

Пред.След.

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

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

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