Как просмотреть функции DLL?

Ответы:

73

Для нативного кода, вероятно, лучше всего использовать Dependency Walker . Также можно использовать утилиту командной строки dumpbin , поставляемую с Visual Studio.

detunized
источник
1
В более новых версиях VS попробуйте DumpBin в качестве внешнего инструмента .
Laurie Stearn
В Википедии есть статья о Dependency Walker. По всей видимости, программа устарела и не работает с некоторыми новыми функциями Windows, но доступна замена: github.com/lucasg/Dependencies
user1324109
50

Используйте бесплатную программу просмотра экспорта DLL , она очень проста в использовании.

Ken D
источник
8
@sumit можно конкретнее? эти инструменты работают у меня на протяжении многих лет.
Ken D
6
На самом деле инструмент работает красиво, просто и понятно, именно то, что мне нужно.
informatik01
5
Это отличный инструмент для создания списка методов / функций, но он не показывает параметры методов (или их типы).
bvdb
1
Очень здорово иметь что-то маленькое и компактное, а не какой-то раздутый продукт, как обычно бывает с официальными продуктами MS.
ワ イ き ん ぐ
38

Вы можете попробовать браузер объектов в Visual Studio.

Выберите " Редактировать набор пользовательских компонентов" . Оттуда вы можете выбрать одну из множества библиотек .NET, COM или проектов или просто импортировать внешние библиотеки DLL через Обзор.

cslewy
источник
16
Visual Studio сообщает: «Выбранный компонент не может быть просмотрен» при использовании Browse и выборе DLL :( - msdn.microsoft.com/query/…
Xdg
5
обозреватель объектов перемещен в View. И да, не работает (зачем, это майкрософт)
phil294
1
Скорее поставщик, чем проблема MS. Вероятно, в dll нет библиотеки типов. См .: stackoverflow.com/a/13903040/1614903
Хольгер Бёнке,
@ HolgerBöhnke тоже нет typelib в userdll32
Kimmax
2
@Kimmax Да, но user32.dll - это собственная Windows DLL, а не COM-сервер. Только COM-серверы (например, COM-библиотеки, элементы управления ActiveX, * .ocx ...) могут иметь библиотеки типов, если они изначально были скомпилированы. Для собственных (= не COM-объектов) DLL могут работать некоторые другие инструменты, упомянутые здесь (dumpbin и др.). То есть, если DLL экспортирует функции по имени, а не только по порядковому номеру.
Holger Böhnke
28

Используйте dumpbinкомандную строку .

  • dumpbin /IMPORTS <path-to-file> должен предоставить функцию, импортированную в эту DLL.
  • dumpbin /EXPORTS <path-to-file> должен предоставлять функции, которые он экспортирует.
jmcarter9t
источник
9

Используйте dotPeek от JetBrains.

https://www.jetbrains.com/decompiler/

dotPeek - это бесплатный инструмент, основанный на ReSharper. Он может надежно декомпилировать любую сборку .NET в код C # или IL.

Шаян
источник
Так это относится к библиотекам DLL, использующим платформу .NET?
Джоэл Боденманн,
8

Для .NET DLL вы можете использовать ildasm

altumano
источник
Поскольку ildasm является продуктом Microsoft и устанавливается на ПК по умолчанию, если у вас установлена ​​Visual Studio. Я считаю, что это лучший вариант. Он также имеет пользовательский интерфейс, поэтому вам не нужно использовать командную строку. Спасибо
Mehrdad
Его можно найти: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ <VERSION> \ bin
f4d0
6

Не сообщая нам, на каком языке эта dll / сборка, мы можем только догадываться.

Так как насчет .NET Reflector

Адриан Стандер
источник
2
Тогда это должен быть твой парень.
Адриан Стандер,
1
Рефлектор .net раньше был бесплатным, но теперь это коммерческий продукт. JustDecompile - это бесплатная альтернатива для .net dll.
bvdb
декомпилятор только говорит вам, какие функции там есть. Можем ли мы увидеть их реализацию как-нибудь?
vipin8169
2

Если DLL написана на одном из языков .NET и вы хотите только просмотреть, какие функции, в проекте есть ссылка на эту DLL.

Затем дважды щелкните DLL в папке ссылок, и вы увидите, какие функции она выполняет в окне OBJECT EXPLORER.

Если вы хотите просмотреть исходный код этого файла DLL, вы можете использовать приложение декомпиляции, такое как рефлектор .NET. надеюсь, это поможет вам.

Karamafrooz
источник