главная программы pe explorer обзорный тур
Декодирование имён экспортируемых функций
Возвращение осмысленного вида декорированным именам
Библиотеки DLL, написанные на C++, часто экспортируют функции с совершенно нечитабельными, так называемыми decorated ("декорированными") именами. Иногда эти имена ещё называют mangled - т.е. "искажённые" или "испорченные".
Происходит это из-за того, что язык C++ позволяет программисту давать разным объектам одинаковые имена. В результате компоновщик генерирует странно выглядящие, но зато уникальные внешние имена функций, в которых закодирована информация о типах принимаемых и возвращаемых переменных.
Таким образом, "декорация" имён гарантирует, что внешние имена функций не будут совпадать и будут содержать только допустимые алфавитно-числовые символы.
Декодирование mangled имён и возвращение им осмысленного вида затрудняется тем, что разные компиляторы используют разные схемы кодировки для генерирования внешних имён. Например, при компилировании функции:
char * istrstream::str(void)
Компиляторы C++ от Microsoft кодируют её как:
?str@istrstream@@QAEPADXZ
а компиляторы C++ от Borland кодируют её как:
@std@istrstream@str$qv
PE Explorer поддерживает обе схемы декодирования внешних имён и приводит к удобочитаемому виду имена экспортируемых функций из DLL, созданных компиляторами C++ как от Microsoft, так и от Borland.
См. также:
Просмотр таблицы экспорта
Как мне получить параметры экспортируемой функции?
Просмотр и редактирование описания синтаксиса функций
Скачать 30-дневную пробную версию PE Explorer Купить лицензию