Re[2]: How to resolve name
От: Sashko Россия http://www.dc.baika.ru/
Дата: 20.08.02 02:22
Оценка: 6 (1)
Здравствуйте Андрей Тарасевич, Вы писали:

АТ>Здравствуйте ShuraM, Вы писали:


SM>>Есть C++ имя

SM>>?Allocate@CBufferAllocator@@UAEPAXK@Z
SM>>Хочется узнать его первообразное имя
SM>>что-то типа
SM>>??? CBufferAllocator::Allocate(???)
SM>>Есть ли в WIN32 API функции которые делают это?

АТ>К Win32 API это никакого отношения не имеет. Подобной "зашифровкой" имен занимается компилятор С++. Каждый компилятор может делать это по-своему.


Так оно и есть, каждый компилятор может по своему имена составлять. Но в случае MS VC, в WIN API есть функция UnDecorateSymbolName, которая делает обратное преобразование.
How to resolve name
От: ShuraM  
Дата: 19.08.02 17:29
Оценка:
Есть C++ имя
?Allocate@CBufferAllocator@@UAEPAXK@Z
Хочется узнать его первообразное имя
что-то типа
??? CBufferAllocator::Allocate(???)
Есть ли в WIN32 API функции которые делают это?
Re: How to resolve name
От: Андрей Тарасевич Беларусь  
Дата: 19.08.02 18:10
Оценка:
Здравствуйте ShuraM, Вы писали:

SM>Есть C++ имя

SM>?Allocate@CBufferAllocator@@UAEPAXK@Z
SM>Хочется узнать его первообразное имя
SM>что-то типа
SM>??? CBufferAllocator::Allocate(???)
SM>Есть ли в WIN32 API функции которые делают это?

К Win32 API это никакого отношения не имеет. Подобной "зашифровкой" имен занимается компилятор С++. Каждый компилятор может делать это по-своему. Смотри документацию к компилятору. Может быть твой компилятор предоставляет функцию для обратного преобразования (в чем я глубоко сомневаюсь). Можно, почитав документацию, написать такую функцию самому. (Если такая функция действительно нужна, то кто-то скорее всего ее уже написал.)
Best regards,
Андрей Тарасевич
Re[3]: How to resolve name
От: Sashko Россия http://www.dc.baika.ru/
Дата: 20.08.02 02:28
Оценка:
Здравствуйте Sashko, Вы писали:

S>Так оно и есть, каждый компилятор может по своему имена составлять. Но в случае MS VC, в WIN API есть функция UnDecorateSymbolName, которая делает обратное преобразование.


В догонку. C Paltform SDK идет утилита UndName.Exe

C:\sdk\psdk\Bin: UndName.Exe ?Allocate@CBufferAllocator@@UAEPAXK@Z
Microsoftо Windowsо Operating System
UNDNAME Version 5.1.2600.0Copyright (c) Microsoft Corporation. All rights reserved.

>> ?Allocate@CBufferAllocator@@UAEPAXK@Z == CBufferAllocator::Allocate


Если посмотреть ее импорт, то видно, что она так же использует UnDecorateSymbolName

  Section contains the following imports:

    IMAGEHLP.dll
               1001000 Import Address Table
               1003CDC Import Name Table
              FFFFFFFF time date stamp
              FFFFFFFF Index of first forwarder reference

      76C969E8     67 UnDecorateSymbolName

    ...
Re: How to resolve name
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 20.08.02 08:16
Оценка:
Здравствуйте ShuraM, Вы писали:

SM>Есть ли в WIN32 API функции которые делают это?


Ну, про функции тебе уже сказали, но это надо телодвижения делать. В Platform SDK есть программа, спец. для избежания оных изобретенная — undname.exe. Занимается раздекорированием имен. Ну, и в ней 2 способа вывода: полный и краткий. Полный включается ключем -f
Алексей Кирдин
Re[4]: How to resolve name
От: Аноним  
Дата: 20.08.02 09:32
Оценка:
Здравствуйте Sashko, Вы писали:

S>Здравствуйте Sashko, Вы писали:


S>>Так оно и есть, каждый компилятор может по своему имена составлять. Но в случае MS VC, в WIN API есть функция UnDecorateSymbolName, которая делает обратное преобразование.


S>В догонку. C Paltform SDK идет утилита UndName.Exe


S>
S>C:\sdk\psdk\Bin: UndName.Exe ?Allocate@CBufferAllocator@@UAEPAXK@Z
S>Microsoftо Windowsо Operating System
S>UNDNAME Version 5.1.2600.0Copyright (c) Microsoft Corporation. All rights reserved.

>>> ?Allocate@CBufferAllocator@@UAEPAXK@Z == CBufferAllocator::Allocate
S>


S>Если посмотреть ее импорт, то видно, что она так же использует UnDecorateSymbolName


S>
S>  Section contains the following imports:

S>    IMAGEHLP.dll
S>               1001000 Import Address Table
S>               1003CDC Import Name Table
S>              FFFFFFFF time date stamp
S>              FFFFFFFF Index of first forwarder reference

S>      76C969E8     67 UnDecorateSymbolName

S>    ...
S>


Спасибо. Именно это я и искал. Помню, что было.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.