PE Explorer

   English English  Deutsch Deutsch  Русский Русский

главная  программы  pe explorer  обзорный тур

Декодирование имён экспортируемых функций

Возвращение осмысленного вида декорированным именам

Библиотеки DLL, написанные на C++, часто экспортируют функции с совершенно нечитабельными, так называемыми decorated ("декорированными") именами. Иногда эти имена ещё называют mangled - т.е. "искажённые" или "испорченные".

Происходит это из-за того, что язык C++ позволяет программисту давать разным объектам одинаковые имена. В результате компоновщик генерирует странно выглядящие, но зато уникальные внешние имена функций, в которых закодирована информация о типах принимаемых и возвращаемых переменных.

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

Декодирование mangled имён функций

Декодирование mangled имён и возвращение им осмысленного вида затрудняется тем, что разные компиляторы используют разные схемы кодировки для генерирования внешних имён. Например, при компилировании функции:

char * istrstream::str(void)

Компиляторы C++ от Microsoft кодируют её как:

?str@istrstream@@QAEPADXZ

а компиляторы C++ от Borland кодируют её как:

@std@istrstream@str$qv


PE Explorer поддерживает обе схемы декодирования внешних имён и приводит к удобочитаемому виду имена экспортируемых функций из DLL, созданных компиляторами C++ как от Microsoft, так и от Borland.


См. также:

Просмотр таблицы экспорта
 Как мне получить параметры экспортируемой функции?
Просмотр и редактирование описания синтаксиса функций

Обзорный тур  
 назад | след. 

 

 

PE Explorer

Скриншоты программы

Скачать 30-дневную пробную версию PE Explorer     Купить лицензию