Bagaimana cara melihat fungsi DLL?

Jawaban:

73

Untuk kode asli mungkin lebih baik menggunakan Dependency Walker . Juga dimungkinkan untuk menggunakan utilitas baris perintah dumpbin yang datang dengan Visual Studio.

diasingkan
sumber
1
Dengan edisi VS yang lebih baru, coba DumpBin sebagai Alat Eksternal .
Laurie Stearn
Ada artikel Wikipedia tentang Ketergantungan Walker. Rupanya program ini telah menjadi usang dan tidak berfungsi dengan beberapa fitur Windows yang lebih baru, tetapi ada pengganti yang tersedia: github.com/lucasg/Dependencies
user1324109
50

Gunakan Penampil Ekspor DLL gratis , sangat mudah digunakan.

Ken D
sumber
8
@sumit, bisakah kamu lebih spesifik? alat ini bekerja untuk saya sepanjang tahun.
Ken D
6
Sebenarnya alat ini bekerja dengan baik, sederhana dan sederhana, hanya apa yang saya butuhkan.
informatik01
5
Ini adalah alat yang hebat untuk menghasilkan daftar metode / fungsi, tetapi tidak menunjukkan parameter metode (atau tipenya).
bvdb
1
Sangat hebat untuk memiliki sesuatu yang kecil dan kompak, dan bukan produk kembung seperti produk MS resmi biasanya.
ワ イ き ん ぐ
38

Anda dapat mencoba Object Browser di Visual Studio.

Pilih Edit Komponen Kustom . Dari sana, Anda dapat memilih dari berbagai perpustakaan .NET, COM atau proyek atau hanya mengimpor dll eksternal melalui Browse.

cslewy
sumber
16
Visual Studio mengatakan "Komponen yang dipilih tidak dapat ditelusuri" saat menggunakan Jelajahi dan pilih DLL :( - msdn.microsoft.com/query/…
Xdg
5
browser objek telah dipindahkan ke View. Dan ya, itu tidak berhasil (mengapa, ini microsoft)
phil294
1
Lebih banyak vendor daripada masalah MS. Probablay tidak ada typelib di dll. Lihat: stackoverflow.com/a/13903040/1614903
Holger Böhnke
@ HolgerBöhnke no typelib di userdll32 baik
Kimmax
2
@Kimmax Yap, tetapi user32.dll adalah DLL windows asli dan bukan server COM. Hanya server COM (mis. COM dll, kontrol ActiveX, * .ocx ...) yang mungkin memiliki typelibs, jika pertama kali dikompilasi, Untuk DLL asli (= objek non COM) beberapa alat lain yang disebutkan di sini (dumpbin et. Al.) Dapat berfungsi. Yaitu, jika ekspor DLL fungsinya dengan nama dan bukan hanya dengan ordinal.
Holger Böhnke
27

Gunakan dumpbinbaris perintah .

  • dumpbin /IMPORTS <path-to-file> harus menyediakan fungsi yang diimpor ke DLL itu.
  • dumpbin /EXPORTS <path-to-file> harus menyediakan fungsi yang diekspornya.
jmcarter9t
sumber
9

Gunakan dotPeek oleh JetBrains.

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

dotPeek adalah alat gratis berdasarkan ReSharper. Itu dapat andal mendekompilasi setiap .NET assembly menjadi kode C # atau IL.

Shayan
sumber
Jadi ini khusus untuk DLL menggunakan .NET framework?
Joel Bodenmann
8

Untuk .NET DLL Anda dapat menggunakan ildasm

altumano
sumber
Karena ildasm adalah produk Microsoft dan diinstal pada PC secara default jika Anda memiliki Visual Studio diinstal. Saya percaya itu adalah pilihan terbaik. Ini juga memiliki UI sehingga Anda tidak perlu menggunakan baris perintah. Terima kasih
Mehrdad Babaki
Itu dapat ditemukan: C: \ Program Files (x86) \ Microsoft SDKs Windows \ <VERSION> \ bin
f4d0
6

Tanpa memberi tahu kami bahasa apa ini dari perakitan dll, kami hanya bisa menebak.

Jadi bagaimana dengan .NET Reflector

Adriaan Stander
sumber
2
Maka ini harus menjadi orangmu.
Adriaan Stander
1
Reflektor. Dulu gratis, tapi ini produk komersial sekarang. Untuk .net dll "JustDecompile" adalah alternatif gratis.
bvdb
apakah decompiler hanya memberi tahu Anda apa fungsi yang ada. dapatkah kita melihat implementasinya juga suatu saat nanti?
vipin8169
2

Jika DLL ditulis dalam salah satu bahasa .NET dan jika Anda hanya ingin melihat fungsi apa, ada referensi ke DLL ini dalam proyek.

Kemudian klik dua kali DLL di folder referensi dan kemudian Anda akan melihat fungsi apa yang ada di jendela OBJECT EXPLORER

Jika Anda ingin melihat kode sumber file DLL Anda dapat menggunakan aplikasi dekompiler seperti .NET reflector. Semoga ini bisa membantu Anda.

Karamafrooz
sumber