home products pe explorer feature tour
UNMAGLING EXPORTED SYMBOLS
Unmangling: Back to Human-Readable Names
Among the exported and imported functions of DLLs there may be found DLLs written in C++ that often export functions with mangled names. Because the C++ programming language allows programmers to give different entities the same name, C++ compilers generate external entity names that include information regarding aspects of the entity's type and fully qualified name in order to keep them disinguishable. This name "mangling" ensures that external names will not clash and that entities with strange names, such as operators (eg. "=", "+", "*" ...), have alphanumeric names that a linker will accept.
Conversely, mapping mangled names back to human-readable ones can be quite a challenge as different vendors employ different encoding schemes to generate these external names. For example, when compiling a function with this signature:
char * istrstream::str(void)
Microsoft C++ compilers embellish it like this:
?str@istrstream@@QAEPADXZ
and Borland C++ compilers embellish it like this:
@std@istrstream@str$qv
PE Explorer is able to internally unmangle the exported symbols from libraries compiled with both Microsoft and Borland C++ compilers.
See also: Quick Function Syntax Lookup and Exports Viewer
Download a 30 day trial version of PE Explorer Buy the Full Version