Comment afficher les fonctions DLL?

Réponses:

73

Pour le code natif, il est probablement préférable d'utiliser Dependency Walker . Il est également possible d'utiliser l' utilitaire de ligne de commande dumpbin fourni avec Visual Studio.

désaccordé
la source
1
Avec les nouvelles éditions de VS, essayez DumpBin en tant qu'outil externe .
Laurie Stearn
Il existe un article Wikipedia sur Dependency Walker. Apparemment, le programme est devenu obsolète et ne fonctionne pas avec certaines fonctionnalités plus récentes de Windows, mais un remplacement est disponible: github.com/lucasg/Dependencies
user1324109
50

Utilisez le visualiseur d'exportation DLL gratuit , il est très facile à utiliser.

Ken D
la source
8
@sumit pouvez-vous être plus précis? cet outil fonctionne pour moi au fil des ans.
Ken D
6
En fait, l'outil fonctionne bien, clairement et simplement, exactement ce dont j'avais besoin.
informatik01 du
5
C'est un excellent outil pour générer une liste de méthodes / fonctions, mais il n'affiche pas les paramètres des méthodes (ni leurs types).
bvdb
1
Très bien d'avoir quelque chose de petit et compact, et non pas un produit gonflé comme le sont généralement les produits officiels MS.
ワ イ き ん ぐ
38

Vous pouvez essayer l' Explorateur d'objets dans Visual Studio.

Sélectionnez Modifier le jeu de composants personnalisés . À partir de là, vous pouvez choisir parmi une variété de bibliothèques .NET, COM ou de projet ou simplement importer des dll externes via Parcourir.

cslewy
la source
16
Visual Studio indique «Le composant sélectionné ne peut pas être parcouru» lors de l'utilisation de Parcourir et de la sélection de DLL :( - msdn.microsoft.com/query/…
Xdg
5
le navigateur d'objets s'est déplacé vers View. Et oui, ça ne marche pas (pourquoi ça, c'est microsoft)
phil294
1
Plus un problème de fournisseur qu'un problème de SP. Probablay il n'y a pas de typelib dans la DLL. Voir: stackoverflow.com/a/13903040/1614903
Holger Böhnke
@ HolgerBöhnke pas de typelib dans userdll32 non plus
Kimmax
2
@Kimmax Oui, mais user32.dll est une DLL Windows native et non un serveur COM. Seuls les serveurs COM (par exemple les dll COM, les contrôles ActiveX, * .ocx ...) peuvent avoir des typelibs, s'ils ont été compilés, en premier lieu. Pour les DLL natives (= objet non COM), certains des autres outils mentionnés ici (dumpbin et. Al.) Peuvent fonctionner. Autrement dit, si la DLL exporte ses fonctions par nom et non par ordinal uniquement.
Holger Böhnke
27

Utilisez la dumpbinligne de commande .

  • dumpbin /IMPORTS <path-to-file> doit fournir la fonction importée dans cette DLL.
  • dumpbin /EXPORTS <path-to-file> devrait fournir les fonctions qu'il exporte.
jmcarter9t
la source
9

Utilisez dotPeek de JetBrains.

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

dotPeek est un outil gratuit basé sur ReSharper. Il peut décompiler de manière fiable tout assembly .NET en code C # ou IL.

Shayan
la source
C'est donc spécifique aux DLL utilisant le framework .NET?
Joel Bodenmann
8

Pour les DLL .NET, vous pouvez utiliser ildasm

Altumano
la source
Comme ildasm est un produit Microsoft et est installé sur PC par défaut si vous avez installé Visual Studio, je pense que c'est la meilleure option.Il dispose également d'une interface utilisateur, vous n'avez donc pas besoin d'utiliser la ligne de commande. Merci
Mehrdad Babaki
Il peut être trouvé: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ <VERSION> \ bin
f4d0
6

Sans nous dire de quelle langue provient cette DLL / assembly, nous ne pouvons que deviner.

Alors qu'en est-il de .NET Reflector

Adriaan Stander
la source
2
Alors ça devrait être ton gars.
Adriaan Stander
1
Le réflecteur .net était gratuit, mais c'est maintenant un produit commercial. Pour .net dll "JustDecompile" est une alternative gratuite.
bvdb
décompilateur ne vous dit-il que les fonctions disponibles. pouvons-nous voir leur mise en œuvre aussi un peu?
vipin8169
2

Si une DLL est écrite dans l'un des langages .NET et si vous souhaitez uniquement afficher les fonctions, il existe une référence à cette DLL dans le projet.

Ensuite, double-cliquez sur la DLL dans le dossier des références et vous verrez alors quelles fonctions elle a dans la fenêtre OBJECT EXPLORER

Si vous souhaitez afficher le code source de ce fichier DLL, vous pouvez utiliser une application de décompilation telle que .NET Reflector. j'espère que cela vous aide.

Karamafrooz
la source