Здравствуйте, Melamed, Вы писали:
M>1. Можно ли программным спосособ узнать, была ли включена RTTI информация при создании динамической библиотеки, написанной на С++ илши нет?
Компилятор помещает
type_infoАвтор: gear nuke
Дата: 26.05.08
в исполняемый образ (по умолчанию, в R\O секцию данных). Эта структура содержит замангленое имя вида '.?AVtype_info@@'. Можно попробовать просканировать dll.
M>3. Можно ли с помощью оператора typeid узнать от каких классов был унаследован класс, экземляр которого изучается?
Объект type_info не содержит нужной информации.
Можно получить пошаманив с разыменовыванием this
MSVC compiler puts a pointer to the structure called "Complete Object Locator" just before the vftable. The structure is called so because it allows compiler to find the location of the complete object from a specific vftable pointer
см.
Reversing Microsoft Visual C++ Part II: Classes, Methods and RTTI
type_info — предпоследний член RTTICompleteObjectLocator, а нужен RTTIClassHierarchyDescriptor. Как с этим работать, должно быть видно в реализации dynamic_cast<> — __RTDynamicCast, в сорцах CRT ее нет, разве что в гугле поискать или поковырять rtti.obj (функции FindSITargetTypeInstance & Co).
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth