Я изучал реализацию библиотеки устройств, которая явно не поддерживает мою операционную систему. В частности, у меня есть дизассемблированная DLL-библиотека и большое количество вспомогательного исходного кода. Как устроена таблица функций / таблица экспорта?
Насколько я понимаю, первая структура раздела .data
представляет собой таблицу RVA. Далее следует таблица строк, связанных индексом с этой первой адресной таблицей. Это имеет смысл для меня, так как компоновщик может переводить между символами и адресами.
Как функции, на которые ссылаются ординалы, вписываются в эту картинку? Как узнать, какая функция имеет такой и такой порядковый номер, и как компоновщик разрешает это? Другими словами, учитывая, что некоторые другие DLL импортируют SOME_LIBRARY_ordinal_7
, как компоновщик узнает, с какой функцией работать?
Спасибо всем!
1012 * редактировать *
Больше информации ...
Я работаю с библиотеками FTDI и хотел бы решить, какая функция вызывается. В частности, я вижу что-то вроде:
extern FTD2XX_Ordinal_28: near
как мне определить, на какую функцию ссылаются, и как это делает компоновщик?