Нет ли у кого-нибудь подробного описания структуры IMAGE_EXPORT_DIRECTORY (IMAGE_DIRECTORY_ENTRY_EXPORT)?
Дело в том, что мне надо определить параметры принимаемые функциями, которые экспортирует ДЛЛька. Может кто-то уже занимался этим?
З.Ы.: С определением самого списка экспортируемых функций проблем нет.
Здравствуйте L0kY, Вы писали:
LY>Нет ли у кого-нибудь подробного описания структуры IMAGE_EXPORT_DIRECTORY (IMAGE_DIRECTORY_ENTRY_EXPORT)? LY>Дело в том, что мне надо определить параметры принимаемые функциями, которые экспортирует ДЛЛька.
Да, в структуре только инфа о кол-ве экспортируемых функций, их именах, ординалах и точках входа...
Я просто думал, может кто-то знает как это можно сделать (может не через эту структуру, может на ассемблере)? Ведь где-то эта инфа хранится!!! Или её в принципе не возможно вытащить???
Здравствуйте L0kY, Вы писали:
LY>Да, в структуре только инфа о кол-ве экспортируемых функций, их именах, ординалах и точках входа... LY>Я просто думал, может кто-то знает как это можно сделать (может не через эту структуру, может на ассемблере)? Ведь где-то эта инфа хранится!!! Или её в принципе не возможно вытащить???
В самой DLL такая информация не хранится (за ненадобностью).
Здравствуйте L0kY, Вы писали:
LY>Нет ли у кого-нибудь подробного описания структуры IMAGE_EXPORT_DIRECTORY (IMAGE_DIRECTORY_ENTRY_EXPORT)? LY>Дело в том, что мне надо определить параметры принимаемые функциями, которые экспортирует ДЛЛька. Может кто-то уже занимался этим?
LY>З.Ы.: С определением самого списка экспортируемых функций проблем нет.
Эту инфу можно выловить не всегда (да и хранится она в неявном виде — в имени экспортируемой C++ф-ции). Дело в том, что как правило, имена экспортируемых функций предваряют extern "C", что заставляет компилятор генерироват человекочитаемое имя (т.е. для SomeFunction(int) будет сгенерировано именно SomeFunction). Компиляторы C++ для контроля типов используют искажение имен для включение в него (имя) информации о типе принимаемых параметров. В результате получается нечто вроде @SomeFunction$I. Алгоритм такого искажения зависит от конкретного компилятора.
Спасибо, все вроде бы получилось... правда тепеь для 100% результата надо разобраться с функциями объявленными extern "C", ведь для них генерится человеко-читаемые (нормальные) имена и они естественно не декодируются... Зато если без extern "C", то все просто прекрасно!
Еще раз спасибо всем, вы очень помогли!