Записи, которые не являются функциями в таблице экспорта PE

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

Я запустил дампбин в определенной библиотеке DLL (Qt5Core.dll) и обнаружил, что в таблице экспорта есть записи, которые не функции — > есть записи, которые по своим адресам указывают на раздел .data и разделы .rdata …
например:

const QAbstractState :: `vftable ‘67366E0C 1470
QMetaObject const QEventTransition :: staticMetaObject 673C15A8 6160
QCoreApplication * QCoreApplication :: self 6746180C 5504

Кажется, что некоторые переменные c ++, и я задавался вопросом, почему они находятся в таблице экспорта?
Спасибо!

2

Решение

Экспорт записей не должен быть функцией.
Вы можете взглянуть на мою ветку stackoverflow: PE — Отличить данные от экспорта функций

Вывод был ясен, данные также можно экспортировать из PE-файла.
Не существует идеального способа отличить их друг от друга, но некоторые эвристические операции и операции времени выполнения могут помочь вам в этом вопросе.
Обратитесь к моему посту выше для получения дополнительной информации (также читайте комментарии).

1

Другие решения

NumberOfFunctions
Общее количество функций / символов, которые экспортируются этим модулем.

NumberOfNames
Количество функций / символов, которые экспортируются по имени. Это значение не является количеством ВСЕХ функций / символов в модуле. Для этого номера вам нужно проверить NumberOfFunctions. Это значение может быть 0. В этом случае модуль может экспортировать только по порядковому номеру. Если нет функции / символа для экспорта в первом случае, RVA таблицы экспорта в каталоге данных будет 0.

Исходя из вышеизложенного, мы заключаем, что в порядковой таблице указано только количество экспортов, которые действительно имеют имя.

Источник: http://win32assembly.programminghorizon.com/pe-tut7.html

1

По вопросам рекламы [email protected]