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


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

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

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

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

Сообщение void_17 » 16 дек 2021, 20:50

Что насчет type_spellvalue и type_enchant_data?
 
Кстати, убрать бы этот AI_ArmyInfo, явно же там было другое имя. Я не перфекицонист, просто вдруг реально есть такой класс/структура ,но с другим, оригинальным именем и там с ним методы связаны.
Последний раз редактировалось void_17 16 дек 2021, 20:58, всего редактировалось 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 » 16 дек 2021, 20:53

Это понятно. Не всё сразу. Будут, конечно, оригинальные имена.
Вернуться к началу

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 » 16 дек 2021, 21:01

В type_enchant_data я всё угадал:

Код: Выделить всё
struct type_enchant_data
{
   enum SpellID spell;                 // 0x00
   enum TSkillMastery mastery;         // 0x04
   unsigned int power;                 // 0x08
   unsigned int duration;              // 0x0C
   bool check_resistance;              // 0x10
};

Только нужно проверить emum TSkillMastery (оригинальное ли название?).
Вернуться к началу

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

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

Сообщение void_17 » 16 дек 2021, 21:05

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

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 » 16 дек 2021, 22:36

Заметил, что число (1 байт), идущее перед именем поля/метода есть длина имени. Например, 0x25 type_AI_spellcaster::get_frenzy_value (длина type_AI_spellcaster::get_frenzy_value равна 37 байт).

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

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 » 17 дек 2021, 00:04

Вот что нарыл. Это спецификация CodeView 4.0, но, вроде, типы совпадают (см. с 55-й страницы): https://pierrelib.pagesperso-orange.fr/exec_formats/MS_Symbol_Type_v1.0.pdf

Код: Выделить всё
T_INT4 0x0074 Real 32-bit signed int
T_UINT4 0x0075 Real 32-bit unsigned int
T_PINT4 0x0174 Near pointer to 32-bit signed int
T_PUINT4 0x0175 Near pointer to 32-bit unsigned int


Код: Выделить всё
T_LONG 0x0012 32-bit signed

0x0012 всё-таки long, а не unsigned int :smile1:

float:

Код: Выделить всё
T_REAL32 0x0040 32-bit real

А вот double:

Код: Выделить всё
T_REAL64 0x0041 64-bit real


Формат для классов:

Код: Выделить всё
The format for classes is as follows:
2 2 2 2 2 2 * *
leaf count @field property @dList @vshape length name

Похоже, здесь всё. Остаётся только вникнуть :smile16:

И битфилды описаны:

Код: Выделить всё
property Property bit field
packed :1 Structure is packed
ctor :1 Class has constructors and/or destructors
overops :1 Class has overloaded operators
isnested :1 Class is a nested class
cnested :1 Class contains nested classes
opassign :1 Class has overloaded assignment
opcast :1 Class has casting methods
fwdref :1 Class/structure is a forward (incomplete) reference
scoped :1 This is a scoped definition
reserved :8

Вот это поле очень полезное для контроля:

Код: Выделить всё
count Number of elements in the class or structure. This count includes
direct, virtual, and indirect virtual bases, and methods including
overloads, data members, static data members, friends, and so on.

Код: Выделить всё
(0x0406) Data Member
This leaf specifies non-static data members of a class.
2 2 2 * *
LF_MEMBER @type attribute offset name
@type Index to type record for field.
attribute Member attribute bit field.
offset Numeric leaf specifying the offset of field in the structure.
name Length-prefixed name of the member field.
Вернуться к началу

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 » 17 дек 2021, 00:39

У нашего экзешника NB11 версия формата:

Цитата:
7.2. Debug Information Format
The debug information format encompasses a block of data that goes into the .exe file at a
location dependent upon the executable file format. The version of the debug information is
specified by a signature that is contained within the debug information. The signature has the
format of NBxx, where xx is the version number and has the following meanings:
NB00 Not supported.
NB01 Not supported.
NB02 Linked by a Microsoft LINK, version 5.10, or equivalent OEM linker.
NB03 Not supported.
NB04 Not supported.
NB05 Emitted by LINK, version 5.20 and later linkers for a file before it has
been packed.
NB06 Not supported.
NB07 Used for Quick C for Windows 1.0 only.
NB08 Used by Microsoft CodeView debugger, versions 4.00 through 4.05,
for a file after it has been packed. Microsoft CodeView,, version 4.00
through 4.05 will not process a file that does not have this signature.
NB09 Used by Microsoft CodeView, version 4.10 for a file after it has been
packed. Microsoft CodeView 4.10 will not process a file that does not
have this signature.

Можно поискать документацию по NB11.

Наверное, этот линк более "правильный": http://web.archive.org/web/20070915060650/http://www.x86.org/ftp/manuals/tools/sym.pdf

Ещё вот это почитать советуют - http://index-of.es/EBooks/Undocumented.Windows.2000.Secrets.-.The.Programmers.Cookbook.pdf
Вернуться к началу

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 » 17 дек 2021, 02:04

Цитата:
Кстати, убрать бы этот AI_ArmyInfo, явно же там было другое имя.

А здесь реально не так просто. Пока думаю так:

Код: Выделить всё
struct type_AI_enemy_data
{
   Army* enemy;         // 0x00                       
   int damage;          // 0x04
   int count;           // 0x08
   int total_damage;    // 0x0C
                        // 0x10
};

Но имена полей для type_AI_enemy_data не следуют непосредственно за type_AI_enemy_data, поэтому не уверен. Но по смыслу названия полей подходят.
Вернуться к началу

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

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

Сообщение void_17 » 17 дек 2021, 07:04

AlexSpl писал(а):

Вот что нарыл. Это спецификация CodeView 4.0, но, вроде, типы совпадают (см. с 55-й страницы): https://pierrelib.pagesperso-orange.fr/exec_formats/MS_Symbol_Type_v1.0.pdf

Код: Выделить всё
T_INT4 0x0074 Real 32-bit signed int
T_UINT4 0x0075 Real 32-bit unsigned int
T_PINT4 0x0174 Near pointer to 32-bit signed int
T_PUINT4 0x0175 Near pointer to 32-bit unsigned int


Код: Выделить всё
T_LONG 0x0012 32-bit signed

0x0012 всё-таки long, а не unsigned int :smile1:

float:

Код: Выделить всё
T_REAL32 0x0040 32-bit real

А вот double:

Код: Выделить всё
T_REAL64 0x0041 64-bit real


Формат для классов:

Код: Выделить всё
The format for classes is as follows:
2 2 2 2 2 2 * *
leaf count @field property @dList @vshape length name

Похоже, здесь всё. Остаётся только вникнуть :smile16:

И битфилды описаны:

Код: Выделить всё
property Property bit field
packed :1 Structure is packed
ctor :1 Class has constructors and/or destructors
overops :1 Class has overloaded operators
isnested :1 Class is a nested class
cnested :1 Class contains nested classes
opassign :1 Class has overloaded assignment
opcast :1 Class has casting methods
fwdref :1 Class/structure is a forward (incomplete) reference
scoped :1 This is a scoped definition
reserved :8

Вот это поле очень полезное для контроля:

Код: Выделить всё
count Number of elements in the class or structure. This count includes
direct, virtual, and indirect virtual bases, and methods including
overloads, data members, static data members, friends, and so on.

Код: Выделить всё
(0x0406) Data Member
This leaf specifies non-static data members of a class.
2 2 2 * *
LF_MEMBER @type attribute offset name
@type Index to type record for field.
attribute Member attribute bit field.
offset Numeric leaf specifying the offset of field in the structure.
name Length-prefixed name of the member field.

Великолепная находка, AlexSPL! Теперь мне осталось найти все типы и просто сверять с документацией! Через пару недель в базе будут все оригинальные типы!
 
Кроме RMG, к сожалению
Вернуться к началу

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 » 17 дек 2021, 10:59

Тема, оказывается, актуальная. По NB11 нет спецификации в открытом доступе, если верить Google и постам на форумах. Но кое-что всё таки можно отыскать:

Цитата:

I finally found a copy of the "Visual C++ 5.0 Symbolic Debug Information Specification" document. You need to download the "MSDN Library October 2001" from MSDN Subscriber Downloads. After installing it, you'll find it under "Specifications - Visual C++ 5.0 Symbolic Debug Information Specification".

If you don't want to install the library at all, you'll find the "specs.chi" file on the first disc and the "specs.chm" file on the second disc. Copy those out and you'll be able to read the document without installing the library.


Нашёл. Качаю. https://archive.org/details/MSDN_Library_October_2001 (три CD).

Нашёл ещё более "надежную" ссылку на Microsoft Symbol and Type Information: http://ftp.openwatcom.org/devel/docs/CodeView.pdf, если захотите поделиться. Это тот же документ, то на известном ftp.
.
Последний раз редактировалось AlexSpl 17 дек 2021, 11:26, всего редактировалось 1 раз.
Вернуться к началу

Пред.След.

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

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

Сейчас этот форум просматривают: Yandex [bot] и гости: 1