Jak wyświetlić funkcje DLL?

Odpowiedzi:

76

W przypadku kodu natywnego prawdopodobnie najlepiej jest użyć Dependency Walker . Możliwe jest również użycie narzędzia wiersza poleceń dumpbin , które jest dostarczane z programem Visual Studio.

detunized
źródło
1
W nowszych wersjach VS wypróbuj DumpBin jako narzędzie zewnętrzne .
Laurie Stearn
1
W Wikipedii jest artykuł o Dependency Walker. Najwyraźniej program stał się przestarzały i nie działa z niektórymi nowszymi funkcjami systemu Windows, ale dostępny jest zamiennik: github.com/lucasg/Dependencies
user1324109
53

Skorzystaj z bezpłatnej przeglądarki DLL Export Viewer , która jest bardzo łatwa w użyciu.

Ken D.
źródło
8
@sumit czy możesz być bardziej szczegółowy? to narzędzie działa dla mnie przez lata.
Ken D
6
Właściwie to narzędzie działa ładnie, prosto i prosto, dokładnie to, czego potrzebowałem.
informatik01
6
To świetne narzędzie do generowania listy metod / funkcji, ale nie pokazuje parametrów metod (ani ich typów).
bvdb
1
Bardzo dobrze jest mieć coś, co jest małe i kompaktowe, a nie jakiś nadęty produkt, jak zwykle są oficjalne produkty MS.
ワ イ き ん ぐ
40

Możesz wypróbować przeglądarkę obiektów w programie Visual Studio.

Wybierz opcję Edytuj zestaw komponentów niestandardowych . Stamtąd możesz wybierać spośród różnych bibliotek .NET, COM lub projektów lub po prostu zaimportować zewnętrzne biblioteki DLL za pomocą funkcji Przeglądaj.

cslewy
źródło
17
Program Visual Studio wyświetla komunikat „Nie można przeglądać wybranego składnika” podczas korzystania z funkcji Przeglądaj i wybierając bibliotekę DLL :( - msdn.microsoft.com/query/…
Xdg
6
przeglądarka obiektów została przeniesiona do View. I tak, to nie działa (dlaczego miałby to zrobić, to microsoft)
phil294
1
Bardziej sprzedawca niż problem SM. Prawdopodobnie nie ma typelib w dll. Zobacz: stackoverflow.com/a/13903040/1614903
Holger Böhnke
@ HolgerBöhnke no typelib in userdll32 albo
Kimmax
2
@Kimmax Tak, ale user32.dll jest natywną biblioteką DLL systemu Windows, a nie serwerem COM. Tylko serwery COM (np. Biblioteki DLL COM, kontrolki ActiveX, * .ocx ...) mogą mieć typelibs, jeśli zostały wkompilowane w pierwszej kolejności. W przypadku natywnych (= obiektów innych niż COM) bibliotek DLL niektóre z innych wymienionych tutaj narzędzi (dumpbin et. Al.) Mogą działać. Oznacza to, że jeśli biblioteka DLL eksportuje swoje funkcje według nazwy, a nie tylko według liczby porządkowej.
Holger Böhnke
29

Użyj dumpbinwiersza poleceń .

  • dumpbin /IMPORTS <path-to-file> powinien udostępniać funkcję zaimportowaną do tej biblioteki DLL.
  • dumpbin /EXPORTS <path-to-file> powinien udostępniać funkcje, które eksportuje.
jmcarter9t
źródło
10

W przypadku bibliotek .NET DLL można użyć ildasm

altumano
źródło
Ponieważ ildasm jest produktem firmy Microsoft i jest instalowany domyślnie na komputerze PC, jeśli masz zainstalowane oprogramowanie Visual Studio, uważam, że jest to najlepsza opcja, ma również interfejs użytkownika, więc nie musisz używać wiersza poleceń. Dzięki
Mehrdad Babaki
Można go znaleźć: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ <WERSJA> \ bin
f4d0
10

Użyj dotPeek firmy JetBrains.

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

dotPeek to darmowe narzędzie oparte na ReSharper. Może niezawodnie dekompilować dowolny zestaw .NET na kod C # lub IL.

Shayan
źródło
2
Czy jest to specyficzne dla bibliotek DLL korzystających z platformy .NET?
Joel Bodenmann
6

Nie mówiąc nam, z jakiego języka pochodzi ten plik dll / assembler, możemy tylko zgadywać.

A co powiesz na .NET Reflector

Adriaan Stander
źródło
2
Więc to powinien być twój facet.
Adriaan Stander
1
Odbłyśnik .net był kiedyś darmowy, ale teraz jest produktem komercyjnym. Dla .net dll "JustDecompile" jest darmową alternatywą.
bvdb
czy dekompilator mówi tylko, jakie funkcje są dostępne. czy widzimy też ich implementację?
vipin8169
2

Jeśli biblioteka DLL jest napisana w jednym z języków .NET i chcesz wyświetlić tylko funkcje, w projekcie znajduje się odwołanie do tej biblioteki DLL.

Następnie dwukrotnie kliknij bibliotekę DLL w folderze odniesień, a zobaczysz jakie funkcje posiada w oknie OBJECT EXPLORER

Jeśli chcesz wyświetlić kod źródłowy tego pliku DLL, możesz użyć aplikacji dekompilującej, takiej jak reflektor .NET. mam nadzieję, że to ci pomoże.

gwt
źródło