วิธีดูฟังก์ชั่น DLL


คำตอบ:


73

สำหรับรหัสพื้นเมืองก็อาจดีที่สุดที่จะใช้อ้างอิง Walker นอกจากนี้ยังสามารถใช้ยูทิลิตี้บรรทัดคำสั่งdumpbinที่มาพร้อมกับ Visual Studio


1
กับรุ่นใหม่ของ VS ลอง dumpbin เป็นเครื่องมือภายนอก
Laurie Stearn

มีบทความ Wikipedia เกี่ยวกับ Dependency Walker เห็นได้ชัดว่าโปรแกรมล้าสมัยและใช้งานไม่ได้กับคุณสมบัติใหม่ ๆ ของ Windows แต่มีสิ่งทดแทนให้: github.com/lucasg/Dependencies
user1324109

50

ใช้DLL Export Viewerฟรีซึ่งใช้งานง่ายมาก


8
@sumit คุณสามารถเจาะจงมากขึ้นได้ไหม เครื่องมือนี้ใช้ได้ผลกับฉันตลอดหลายปีที่ผ่านมา
Ken D

6
จริงๆแล้วเครื่องมือนี้ใช้งานได้ดีเรียบง่ายและเรียบง่ายในสิ่งที่ฉันต้องการ
informatik01

5
เป็นเครื่องมือที่ยอดเยี่ยมในการสร้างรายการของวิธีการ / ฟังก์ชัน แต่จะไม่แสดงพารามิเตอร์ของวิธีการ (หรือประเภท)
bvdb

1
ดีมากที่มีบางอย่างที่มีขนาดเล็กและกะทัดรัดและไม่ใช่ผลิตภัณฑ์ที่บวมเหมือนผลิตภัณฑ์ MS อย่างเป็นทางการ
ワイきんぐ

38

คุณอาจลองใช้Object Browserใน Visual Studio

เลือกแก้ไขชุดชิ้นส่วนที่กำหนดเอง จากนั้นคุณสามารถเลือกจาก. NET, COM หรือไลบรารีโปรเจ็กต์ต่างๆหรือเพียงแค่นำเข้า dll ภายนอกผ่านการเรียกดู


16
Visual Studio แจ้งว่า "ไม่สามารถเรียกดูส่วนประกอบที่เลือกได้" เมื่อใช้เรียกดูและเลือก DLL :( - msdn.microsoft.com/query/…
Xdg

5
Viewเบราว์เซอร์วัตถุได้ย้ายไป และใช่มันใช้ไม่ได้ (ทำไมต้องเป็น Microsoft)
phil294

1
มีผู้ขายมากกว่าปัญหา MS Probablay ไม่มี typelib ใน dll ดู: stackoverflow.com/a/13903040/1614903
Holger Böhnke

@ HolgerBöhnkeไม่มี typelib ใน userdll32 เช่นกัน
Kimmax

2
@Kimmax ใช่ แต่ user32.dll เป็น Windows DLL ดั้งเดิมไม่ใช่เซิร์ฟเวอร์ COM เฉพาะเซิร์ฟเวอร์ COM (เช่น COM dlls, ตัวควบคุม ActiveX, * .ocx ... ) เท่านั้นที่อาจมีตัวพิมพ์ดีดได้หากมีการคอมไพล์ตั้งแต่แรก สำหรับ DLL ดั้งเดิม (= ไม่ใช่วัตถุ COM) เครื่องมืออื่น ๆ บางตัวที่กล่าวถึงที่นี่ (dumpbin et. al.) อาจใช้งานได้ นั่นคือถ้า 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 framework?
Joel Bodenmann

8

สำหรับ. NET DLL คุณสามารถใช้ildasm


เนื่องจาก ildasm เป็นผลิตภัณฑ์ของ Microsoft และติดตั้งบนพีซีโดยค่าเริ่มต้นหากคุณติดตั้ง Visual Studio ไว้ฉันเชื่อว่านี่เป็นตัวเลือกที่ดีที่สุดนอกจากนี้ยังมี UI ดังนั้นคุณจึงไม่จำเป็นต้องใช้บรรทัดคำสั่ง ขอบคุณ
Mehrdad Babaki

สามารถพบได้: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ <VERSION> \ bin
f4d0

6

โดยไม่ต้องบอกเราว่า dll / แอสเซมบลีนี้มาจากภาษาอะไรเราสามารถเดาได้เท่านั้น

แล้ว. NET Reflectorล่ะ


2
ถ้าอย่างนั้นนี่ควรเป็นผู้ชายของคุณ
Adriaan Stander

1
. net reflector เคยเป็นของฟรี แต่ตอนนี้เป็นผลิตภัณฑ์เชิงพาณิชย์ สำหรับ "JustDecompile" ของ. net dll เป็นทางเลือกที่ไม่เสียค่าใช้จ่าย
bvdb

ตัวถอดรหัสจะบอกคุณว่ามีฟังก์ชันอะไรบ้าง เราสามารถดูการนำไปใช้งานได้หรือไม่?
vipin8169

2

หาก DLL ถูกเขียนด้วยภาษา. NET ภาษาใดภาษาหนึ่งและหากคุณต้องการดูเฉพาะฟังก์ชันใดมีการอ้างอิงถึง DLL นี้ในโครงการ

จากนั้นคลิกสองครั้งที่ DLL ในโฟลเดอร์อ้างอิงจากนั้นคุณจะเห็นว่ามันมีฟังก์ชั่นอะไรในหน้าต่าง OBJECT EXPLORER

หากคุณต้องการดูซอร์สโค้ดของไฟล์ DLL นั้นคุณสามารถใช้แอพพลิเคชั่นถอดรหัสเช่น. NET reflector หวังว่านี่จะช่วยคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.