Объявления

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

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

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

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

Сообщение void_17 » 21 ноя 2021, 10:47

Приветствую коммьюнити мододелов! Представляю вашему вниманию свою базу данных по .exe Heroes 3 SoD, содержащую огромное количество отладочной информации RoE, а также изученные мною нововведения AB и SoD. Основной источник отладочной информации RoE это база данных RoE Dreamcast.
СКАЧАТЬ / DOWNLOAD : https://drive.google.com/file/d/1MY28K8cVbAeBzAbBBBf5ZeK-0aLMfz_d/view?usp=sharing


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

Ссылки для скачивания:
SoD-База by void_17: https://drive.google.com/file/d/1MY28K8cVbAeBzAbBBBf5ZeK-0aLMfz_d/view?usp=sharing
RoE-Dreamcast-база: https://drive.google.com/file/d/1rAWaKjzy8q23wUBiHs_SlifPGuJ1U2B-/view?usp=sharing
Дамп отладочной информации из RoE-Dreamcast: https://drive.google.com/file/d/1f33j57 ... sp=sharing

DISCORD SERVER:
https://discord.gg/BrbwGNFYgP
Последний раз редактировалось void_17 04 окт 2024, 10:09, всего редактировалось 10 раз(а).
Вернуться к началу

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

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

Сообщение void_17 » 21 ноя 2021, 10:54

@RoseKavalier, here is an alternative version of H3API, corrected a bit according to original class/structure names.
https://drive.google.com/file/d/12xZWv- ... sp=sharing
Вернуться к началу

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

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

Сообщение void_17 » 21 ноя 2021, 11:08

Чтобы "стандартизировать" все это дело и для систематизации в коммьюнити, следует ввести соглашение об именах.
Соглашения об именах:

1. Функции
Если вы не знаете, что метод точно принадлежит классу, но пока не до конца знаете, что это за сигнатура(или ее вообще нет в Dreamcast), следует переименовать функцию по следующему шаблону: имякласса_адрес
пример: combatManager_46A150
Если вы узнали, что эта сигнатура есть и функция с данной сигнатурой совпадает или почти полностью совпадает с функцией в Dreamcast-базе, скопируйте сигнатуру из Dreamcast-базы вместо имени этой функции. Если функция была добавлена в AB/SoD, отразите это перед именем метода.
Пример: combatManager::SOD_is_in_fear

2. Поля структур/классов:
Называть поля согласно CamelCase.
Пример: SoundFileName.
Неизвестные поля называть field_смещение или f_смещение
Неиспользуемые поля называть unused_смещение или u_смещение

3. Аргументы функций и локальные переменные:
Аргументы функций называть с заглавной буквы(искл.: this)
Локальные переменны со строчной. Желательно избегать snake_case.

4. Глобальные переменные
Приставка g — global, перед каждой глобальной переменной,
после нее p — pointer, если переменная является указателем или первая буква в названии типа, если НЕ указатель и НЕ целый класс/структура. Например глобальная int-переменная будет giVar
Последний раз редактировалось void_17 21 ноя 2021, 15:48, всего редактировалось 2 раз(а).
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5588
Зарегистрирован: 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 » 21 ноя 2021, 13:31

В Google Drive по умолчанию закрыт доступ к файлам. Откройте, пожалуйста.

Кстати, с сигнатурами из базы Dreamcast нужно быть осторожнее из-за изменения некоторых аспектов игры в SoD. Например, в Dreamcast параметр может быть bool, а в SoD уже есть накладные почвы и он становится char.
Вернуться к началу

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

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

Сообщение void_17 » 21 ноя 2021, 15:38

Разрешил.

Да, насчет этого согласен.Для этого следует просто изменить настройки компилятора. По умолчанию там bool 4 байта занимает.
Вернуться к началу

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

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

Сообщение void_17 » 21 ноя 2021, 15:49

Очень жаль, что в IDA нет шаблонов и она не может принять vector<army> ArmyVector, а только vector ArmyVector. Может плагин есть какой? Хотя врядли
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5588
Зарегистрирован: 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 » 21 ноя 2021, 15:56

Вроде, поддерживает:

Код: Выделить всё
private: void __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short>>::_Tidy(bool)

Код: Выделить всё
int __stdcall std__basic_string_unsigned_short_std__char_traits_unsigned_short__std__allocator_unsigned_short_____Tidy(char)
Вернуться к началу

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

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

Сообщение void_17 » 21 ноя 2021, 16:00

Не, не, я не про имена, я про собственно типы. Имена отображаются, потому что здесь вы видите имена за ширмой Visual Studio деманглера.Вот эти шаблонно сгенерированные имена IDA(с <> скобками и прочей чухней типа соглашения о вызове и спецификаторе доступа) без проблем отображает, но для IDA это просто имя, но не тип. Я кидал в шапке статью про это на педивикии. А впринципе никакой переменной IDA нельзя присвоить тип конкретного шаблона, вам ошибку выдаст. Приходится пояснять, какого типа элементы того же vector-a.
 
Кстати отображение этих самых псевдо-имен вы можете настроить в настройках Demangler... непосредственно во вкладке Settings. Long Names: имя, которое вы видите ,когда находитесь на верхушке функции в ассемблерном листинге. Short Names: имя, которое вы видите при вызове функции в ассемблерном листинге или в списке функций в соответствующем окне. Почему-то в дримкастной базе все __cdecl, поэтому отключите отображение соглашений о вызове и там и там, и настройте для удобства под себя.


Таким образом вполне засчет деманглера в функции может быть имя, содержащее в аргументе std::vector<army> &, но в действительности, дальше vector* вы не сможете задать тип, потому что IDA с шаблонами работать не умеет.
Последний раз редактировалось void_17 21 ноя 2021, 16:11, всего редактировалось 1 раз.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5588
Зарегистрирован: 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 » 21 ноя 2021, 16:10

Действительно:

Цитата:
IDA can parse and handle simple C++ class declarations. It cannot parse templates and other complex constructs but simple standard cases can be parsed.

.
Вернуться к началу

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

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

Сообщение void_17 » 21 ноя 2021, 16:13

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

След.

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

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

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