Внутри DLL, как структурирована таблица функций? - PullRequest
6 голосов
/ 22 февраля 2010

Я изучал реализацию библиотеки устройств, которая явно не поддерживает мою операционную систему. В частности, у меня есть дизассемблированная DLL-библиотека и большое количество вспомогательного исходного кода. Как устроена таблица функций / таблица экспорта?

Насколько я понимаю, первая структура раздела .data представляет собой таблицу RVA. Далее следует таблица строк, связанных индексом с этой первой адресной таблицей. Это имеет смысл для меня, так как компоновщик может переводить между символами и адресами.

Как функции, на которые ссылаются ординалы, вписываются в эту картинку? Как узнать, какая функция имеет такой и такой порядковый номер, и как компоновщик разрешает это? Другими словами, учитывая, что некоторые другие DLL импортируют SOME_LIBRARY_ordinal_7, как компоновщик узнает, с какой функцией работать?

Спасибо всем!

1012 * редактировать * Больше информации ...

Я работаю с библиотеками FTDI и хотел бы решить, какая функция вызывается. В частности, я вижу что-то вроде:

extern FTD2XX_Ordinal_28: near

как мне определить, на какую функцию ссылаются, и как это делает компоновщик?

1 Ответ

3 голосов
/ 22 февраля 2010

Чтобы узнать, как работают компоновщики и загрузчик в Windows, вероятно, наиболее доступная информация взята из набора столбцов, которые Мэтт Пьетрек сделал более десяти лет назад:

И самый большой и лучший:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...