Как я могу узнать, какие функции вызываются в файле .dll, когда этот файл .dll используется программой .exe?

У меня есть вопрос, связанный с вызовом функций в DLL-файле. Если я хорошо понимаю, в файле DLL мы можем определить множество различных функций, которые могут быть вызваны файлом .exe. Например, функции, которые могут быть вызваны из a.dll Файл включает в себя следующие функции:

void fun1(int k);
int  fun2(float value);
float fun3(double sig);

Для конкретной программы, например, a.exe, это может только вызвать fun1 функция в a.dll без использования других функций. Тогда мой вопрос, как я могу узнать, какие функции вызываются при запуске программы .exe.

2

Решение

Вы можете проверить таблицу символов исполняемого файла на наличие импортированных символов. Для окон (.exe файлы) вы можете использовать DUMPBIN утилита с /IMPORTS как описано здесь.

ОбновитьКак упоминалось в комментариях, исполняемый файл может загружать библиотеки DLL и динамически обращаться к ним таким образом, чтобы не создавать символы во время компиляции. Например, позвонив GetProcAddress после загрузки DLL с помощью LoadLibrary. В этом случае не будет присутствовать символ и DUMPBIN не будет перечислять это, но функция может или не может быть вызвана.

Если вы более или менее знаете, как работает исполняемый файл и он, кажется, не выполняет какие-то действия динамически (например, загружает код из библиотек подключаемых модулей), то можно с уверенностью предположить, что динамическая загрузка не происходит. Кроме того, если таблица символов exe показывает немного функций из данной DLL, маловероятно, что exe динамически обращается к функциям из той же DLL.

Кроме того, тот факт, что функция появляется в таблице символов, не гарантия что он будет вызван exe, но в любом нормальном, статическом случае это делает его вполне вероятным.

4

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

Ты можешь использовать Зависимость Уокер

«Dependency Walker — это бесплатная утилита, которая сканирует любой 32-битный или 64-битный модуль Windows (exe, dll, ocx, sys и т. Д.) И строит иерархическую древовидную диаграмму всех зависимых модулей. Для каждого найденного модуля она перечисляет все функции, которые экспортируются этим модулем, и какие из этих функций фактически вызываются другими модулями. В другом представлении отображается минимальный набор требуемых файлов вместе с подробной информацией о каждом файле, включая полный путь к файлу, базовый адрес, номера версий, тип машины, отладочная информация и многое другое. «

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector