Подтвердить что ты не робот

Самая лучшая утилита dump dump

У меня есть несколько сотен DLL, принадлежащих к огромному проекту spagetti-code, и вам нужно увидеть, какие вызовы они экспортируют или импортируют. И было бы замечательно, если бы я смог получить график зависимости между DLL. Может ли кто-нибудь рекомендовать мне бесплатные и надежные утилиты для этого? Спасибо.

Редактировать. Подход для зависимостей кажется недостаточным: мне нужно получить список не только для требуемых DLL, но и узнать, для чего предназначены эти DLL.

4b9b3361

Ответ 1

Dependency Walker (зависит .exe) может сделать это бесплатно. Он также имеет функцию профиля, чтобы вы могли видеть, какие DLL загружаются динамически.

depends.exe screenshot

Если ваши DLL являются сборками .Net, вы можете использовать Reflector, а если это COM DLL с библиотекой типов, вы можете использовать OleView для получения дополнительной информации. Чтобы получить больше информации из обычной библиотеки DLL, вам придется прибегнуть к дизассемблерам и чтению сборки.

Ответ 2

http://www.ntcore.com/exsuite.php "CFF Explorer" у этого инструмента есть все, что вы хотите. Прочитайте его функции на главной странице. Удачи!

Ответ 3

Нет способа получить информацию о том, какие библиотеки используются. Вы должны прочитать программную документацию вашего проекта - надеюсь, что она есть. Также внимательно изучите make файлы.

Вы можете видеть, какие DLL были включены (статически - в другом смысле, отличном от обычно используемого) во время соединения, но это подмножество DLL. Он не вернет никаких плагинов или реальных динамически загружаемых библиотек.

Чтобы использовать это в библиотеках времени компоновки, вы должны использовать инструмент "dumpbin", который поставляется с MSVC. "Dependancy walker" - это только фронтенд этого инструмента.

Затем напишите несколько сценариев и/или используйте grep для фильтрации выходных данных для анализа содержимого DLL.

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