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


Ответы:


73

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


1
В более новых версиях VS попробуйте DumpBin в качестве внешнего инструмента .
Laurie Stearn

В Википедии есть статья о Dependency Walker. По всей видимости, программа устарела и не работает с некоторыми новыми функциями Windows, но доступна замена: github.com/lucasg/Dependencies
user1324109

50

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


8
@sumit можно конкретнее? эти инструменты работают у меня на протяжении многих лет.
Ken D

6
На самом деле инструмент работает красиво, просто и понятно, именно то, что мне нужно.
informatik01

5
Это отличный инструмент для создания списка методов / функций, но он не показывает параметры методов (или их типы).
bvdb

1
Очень здорово иметь что-то маленькое и компактное, а не какой-то раздутый продукт, как обычно бывает с официальными продуктами MS.
ワ イ き ん ぐ

38

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

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


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> должен предоставлять функции, которые он экспортирует.

9

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

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

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


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

8

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


Поскольку 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. надеюсь, это поможет вам.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.