Как обходчик зависимостей узнает, какие функции используются в модуле? - PullRequest
1 голос
/ 14 мая 2011

Может перечислять функции, которые используются среди экспортируемых функций.

Как это работает?

1 Ответ

3 голосов
/ 14 мая 2011

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

Таким образом, все, что нужно сделать Dependency Walker, - это пройти через все эти модули (образно, «проходя» через них), составив список модулей, указанных в соответствующих таблицах импорта.

Он не отображает все зависимости времени выполнения (например, загруженные с помощью функции GetProcAddress), так как они не перечислены в таблице импорта. Он показывает только зависимости времени загрузки (или статические).

Вы можете найти больше информации о том, как работает Dependency Walker здесь и здесь .

...