Làm thế nào để xem các chức năng DLL?


Câu trả lời:


73

Đối với mã gốc, có lẽ tốt nhất là sử dụng Dependency Walker . Cũng có thể sử dụng tiện ích dòng lệnh dumpbin đi kèm với Visual Studio.


1
Với các phiên bản mới hơn của VS, hãy thử DumpBin làm Công cụ bên ngoài .
Laurie Stearn

Có một bài viết trên Wikipedia về Dependency Walker. Rõ ràng chương trình đã trở nên lỗi thời và không hoạt động với một số tính năng mới hơn của Windows, nhưng có một sự thay thế có sẵn: github.com/lucasg/Dependencies
user1324109

50

Sử dụng Trình xem xuất khẩu DLL miễn phí , nó rất dễ sử dụng.


8
@sumit bạn có thể cụ thể hơn? công cụ này hoạt động với tôi trong nhiều năm.
Ken D

6
Trên thực tế công cụ này hoạt động tốt, đơn giản và đơn giản, chỉ là những gì tôi cần.
informatik01

5
Đây là một công cụ tuyệt vời để tạo danh sách các phương thức / hàm, nhưng nó không hiển thị các tham số của các phương thức (cũng như các kiểu của chúng).
bvdb

1
Rất tuyệt vời khi có một cái gì đó nhỏ và gọn, và không phải là một số sản phẩm cồng kềnh như các sản phẩm MS chính thức thường có.
ワ イ き ん

38

Bạn có thể thử Trình duyệt đối tượng trong Visual Studio.

Chọn Chỉnh sửa bộ thành phần tùy chỉnh . Từ đó, bạn có thể chọn từ nhiều thư viện .NET, COM hoặc dự án hoặc chỉ cần nhập các dll bên ngoài thông qua Duyệt.


16
Visual Studio cho biết "Thành phần được chọn không thể được duyệt" khi sử dụng Duyệt và chọn DLL :( - msdn.microsoft.com/query/iêu
Xdg

5
trình duyệt đối tượng đã chuyển đến View. Và vâng, nó không hoạt động (tại sao nó lại là microsoft)
phil294

1
Nhiều nhà cung cấp hơn một vấn đề MS. Probablay không có typelib trong dll. Xem: stackoverflow.com/a/13903040/1614903
Holger Böhnke

@ HolgerBöhnke không có typelib trong userdll32 hoặc
Kimmax

2
@Kimmax Yep, nhưng user32.dll là một DLL cửa sổ gốc chứ không phải máy chủ COM. Chỉ các máy chủ COM (ví dụ: COM dlls, điều khiển ActiveX, * .ocx ...) có thể có typelibs, nếu chúng được biên dịch ở vị trí đầu tiên. Đối với DLL gốc (= đối tượng COM), một số công cụ khác được đề cập ở đây (dumpbin và cộng sự) có thể hoạt động. Đó là, nếu DLL xuất khẩu nó theo tên chứ không phải chỉ theo thứ tự.
Holger Böhnke

27

Sử dụng dumpbindòng lệnh .

  • dumpbin /IMPORTS <path-to-file> nên cung cấp hàm được nhập vào DLL đó.
  • dumpbin /EXPORTS <path-to-file> nên cung cấp các chức năng nó xuất khẩu.

9

Sử dụng dotPeek bởi JetBrains.

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

dotPeek là một công cụ miễn phí dựa trên ReSharper. Nó có thể dịch ngược đáng tin cậy bất kỳ cụm .NET nào thành mã C # hoặc IL.


Vì vậy, điều này là cụ thể cho các DLL sử dụng .NET framework?
Joel Bodenmann

8

Đối với .NET DLL, bạn có thể sử dụng ildasm


Vì ildasm là một sản phẩm của Microsoft và được cài đặt trên PC theo mặc định nếu bạn đã cài đặt Visual Studio. Tôi tin rằng đó là tùy chọn tốt nhất. Nó cũng có giao diện người dùng nên bạn không cần sử dụng dòng lệnh. Cảm ơn
Mehrdad Babaki

Có thể tìm thấy: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ <VERSION> \ bin
f4d0

6

Không cho chúng tôi biết ngôn ngữ này sẽ được lắp ráp từ ngôn ngữ nào, chúng tôi chỉ có thể đoán.

Vậy làm thế nào về .NET Reflector


2
Sau đó, đây nên là chàng trai của bạn.
Stander Adriaan

1
Phản xạ .net trước đây là miễn phí, nhưng giờ đây nó là một sản phẩm thương mại. Đối với "JustDecompile" của .net dll là một sự thay thế miễn phí.
bvdb

không dịch ngược chỉ cho bạn biết những chức năng đang có. chúng ta có thể thấy việc thực hiện của họ là một ngày nào đó không?
vipin8169

2

Nếu một DLL được viết bằng một trong các ngôn ngữ .NET và nếu bạn chỉ muốn xem những chức năng nào, thì có một tham chiếu đến DLL này trong dự án.

Sau đó nhân đôi DLL trong thư mục tài liệu tham khảo và sau đó bạn sẽ thấy nó có chức năng gì trong cửa sổ MỤC TIÊU GIẢI QUYẾT

Nếu bạn muốn xem mã nguồn của tệp DLL đó, bạn có thể sử dụng ứng dụng dịch ngược như .NET Reflector. Hy vọng điều này sẽ giúp bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.